Skip to main content
 首页 » 编程设计

python之django nose 和 south 有多个数据库的问题

2025年05月04日23me-sa

我有一个带有一个数据库(默认)的 Django 项目。安装 South 是为了生成迁移脚本和 nose 作为测试框架。模型是建立在这个数据库上的。所有测试均已成功运行。

随后,我需要连接第二个数据库(旧版),我也将其添加到 DATABASES 配置中。我使用原始 sql 访问这个数据库,没有模型。在尝试运行之前运行的测试时,我注意到:

  1. nose 还为遗留数据库创建了一个测试数据库
  2. 默认的 django 表(auth_...等)也在这个数据库中创建
  3. south 也针对遗留数据库运行所有迁移脚本,但失败了

我想要的是禁止创建测试遗留数据库和在其上运行迁移脚本。理想情况下,我想通过发出原始 sql create-insert 语句自己在测试遗留数据库中创建表。这可能吗?

感谢您的帮助。

请您参考如下方法:

您的阻力最小的途径可能是编写您自己的测试运行管理命令。为此,您可以覆盖现有命令,也可以简单地创建一个具有所需行为的单独命令。

创建自定义管理命令的文档可以在官方django docs上找到你可以在 django-test-extensions 中找到一个覆盖股票“测试”命令的好例子项目。