【发布时间】:2017-08-19 11:47:40
【问题描述】:
在 PyCharm 中,我创建了一个空白的新 Django 应用程序。在创建了一些模型并发布了manage.py makemigrations 和manage.py migrate 之后,我尝试编写一个独立的脚本,用初始数据填充数据库。我在其导入中写道:
from MyApp.models import Model1, Model2, …
遗憾的是,在 PyCharm 中运行此脚本会引发异常:django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
我在谷歌上搜索了这个异常,并在 SO https://stackoverflow.com/a/27455703/4385532 中找到了答案,建议将其放在我的脚本顶部:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
所以我做到了。可悲的是,这并没有解决问题。现在我遇到了另一个例外:
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
我该怎么办?
【问题讨论】:
-
您是否也这样做了:
import django; django.setup()? -
您是否将 PyCharm 项目配置为 Django 项目?您需要设置几个设置。
-
除非您正在做一些非常不寻常的事情,否则“使用初始数据填充数据库的脚本”将是固定装置或数据迁移的完美用例,具体取决于数据是否可以加载为是(即来自json)或需要一些操作。在尝试更复杂的操作之前,请查看这些选项。
-
@bernie,谢谢!添加这一行似乎已经解决了这个问题。
-
@ChidG 我正在从
xls文件中导入数据。该脚本花了 f#cking 10 个小时才能完成,而将相同的数据从xls文件导入 Python dicts 需要几秒钟。生成的.sqlite3文件为14.3 MB大,为什么将14.3 MB数据写入HDD 需要10 个小时?感谢您向我指出固定装置和数据迁移,如果我必须重新导入这些数据,我一定会看看这个,也许——只是也许——它会更快。
标签: django