"有时Django无视我的DATABASE_ENGINE设置"

2024-03-29 06:40:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个站点,每个站点都有一个不同的设置文件,并且有不同的名称。所有的不同设置都有一个花卉主题。我们必须把地点分开。在

C:\Proj-Carnation> echo %DJANGO_SETTINGS_MODULE%
path.to.settings_carnation_win32

我们有许多测试过程不使用内置的django-admin.py test命令,因为它们是由Django前端启动的大批量作业,并且使用Django ORM。我们需要使用django.db.connection.creation.create_test_db()方法来创建一个新的测试数据库。在

我们用这个测试程序已经有一段时间了。目前,它停止工作。我们已经对代码结构做了很多修改,升级到Django 1.1.1和python2.6。都可能是罪魁祸首。在

当我运行Python时,我看到了这个。在

^{pr2}$

在导入django.db的过程中,某些设置显然没有设置。我在django.db中添加了一个print语句(拼错了“INSIDE”)。设置未设置。在

最终,settings.DATABASE_ENGINE变成{}。为了扩展这种“最终”行为是预期的:settings模块使用了一种延迟加载技术。在

问题是:这个连接——从不完整的设置中构建——是dummy数据库后端。但是,最后的设置显示引擎是'sqlite3'。在

在另一个项目(“根”项目)中,没有问题。一切都很顺利。DB设置创建正确的sqlite3后端实例。在

那么,有什么不同?我被难住了。环境设置或物理目录树是最大的潜在问题。在

在非工作C:\Proj-Carnation中,PYTHONPATH是{}。在

在工作根项目C:\Proj-Carnation中,PYTHONPATHC:\Proj-Root;C:\This;C:\That。在

我是不是在“康乃馨”项目中寻找在根项目中隐藏了某些东西的东西?可悲的是,康乃馨项目只有几个文件,它们在一个包(local)中,这样可以确保它们的名称与根项目不同。在

版本1.1.1中是否存在一些不同的Django初始化?例如,django.conf中是否存在与python2.6和django1.1.1不协调的地方?在

有没有一些我忽略的相关进口问题?在


Tags: 文件项目djangotest名称数据库dbsettings
1条回答
网友
1楼 · 发布于 2024-03-29 06:40:38

找到了。在

当您的设置模块在包中时,该包的顶层__init__.py成员不能导入任何种类的Django材料。在

如果包含您的设置的顶层__init__.py具有Django导入,则该Django导入将(可能)在创建设置之前使用默认设置。在

由于Django中的一些东西(比如数据库连接)是单例的,所以在读取设置时创建的东西是唯一可以存在的。在

不要在包含设置模块的包中的__init__.py中放入任何内容。在

相关问题 更多 >