Django loaddata设置错误
尝试在本地计算机(win/sqlite)上使用loaddata时: 我得到以下错误:Django loaddata设置错误,django,loaddata,Django,Loaddata,尝试在本地计算机(win/sqlite)上使用loaddata时: 我得到以下错误: raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_M
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
我正在使用djangoconfig应用程序,如果有帮助:
"""
Django-config settings loader.
"""
import os
CONFIG_IDENTIFIER = os.getenv("CONFIG_IDENTIFIER")
if CONFIG_IDENTIFIER is None:
CONFIG_IDENTIFIER = 'local'
# Import defaults
from config.base import *
# Import overrides
overrides = __import__(
"config." + CONFIG_IDENTIFIER,
globals(),
locals(),
["config"]
)
for attribute in dir(overrides):
if attribute.isupper():
globals()[attribute] = getattr(overrides, attribute)
projects>python manage.py loaddata dumpdata.json--settings=config.base
WARNING: Forced to run environment with LOCAL configuration.
Problem installing fixture 'dumpdata.json': Traceback
(most recent call last):
File "loaddata.py", line 174, in handle
obj.save(using=using)
...
File "C:\Python26\lib\site-packages\django\db\backends\sqlite3\base.py", line
234, in execute
return Database.Cursor.execute(self, query, params)
IntegrityError: columns app_label, model are not unique
向Django提供设置有两种标准方法
- 使用set(或在Unix上导出)
set DJANGO\u SETTINGS\u MODULE=mysite.SETTINGS
- 或者作为选项使用
django-admin.py--settings=mysite.settings
django-admin.py loaddata dumpdata.json——设置=
实际上--设置需要python包语法,所以除了设置初始项目外,不要使用
django admin.py
。拥有项目后,请改用manage.py
——它会设置对设置文件的引用。syncdb
将加载内容类型,您需要在加载数据之前清除该表。大概是这样的:
c:\> sqlite3 classifier.db
sqlite> delete from django_content_type;
sqlite> ^Z
c:\> python django-admin.py loaddata dumpdata.json
另外,请确保在同步数据库时不要创建超级用户或任何用户,因为这些用户可能也会与您的数据设备发生冲突…我尝试过,但没有成功-可能是因为我使用djangoconfig应用程序来管理我的设置。用解释器的输出编辑了我的问题。manage.py似乎正在获取正确的配置文件,但现在我遇到了一个新错误。实际上,您不需要使用manage.py进行--settings。看起来loaddata可以与manage.py一起使用,所以请尝试取消设置选项。
IntegrityError
看起来像是来自contrib包之一的内容类型表。我敢打赌,您试图加载到的数据库中已经有一些内容,可能来自之前失败的加载。由于您似乎正在使用SQLite,请删除数据库文件,syncdb
(如果需要)以创建新的数据库,然后重试加载。同意@Mike DeSimone,但syncdb
将使用数据初始化内容类型,因此您可能会遇到相同的错误(请按照他的建议查看!)。您可能需要编辑dumpdata.json以取出content_types.Removed sqlite db的数据。没有同步数据库。尝试loaddata=相同错误。当我遇到类似情况时,我发现这个答案非常有用。这让我很快摆脱困境,谢谢!
c:\> sqlite3 classifier.db
sqlite> delete from django_content_type;
sqlite> ^Z
c:\> python django-admin.py loaddata dumpdata.json