【问题标题】:How to write a stand-alone Python script working with Django modules?如何编写使用 Django 模块的独立 Python 脚本?
【发布时间】:2017-08-19 11:47:40
【问题描述】:

在 PyCharm 中,我创建了一个空白的新 Django 应用程序。在创建了一些模型并发布了manage.py makemigrationsmanage.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


【解决方案1】:

确保你也这样做:

import django 
django.setup()

加载模型。

文档:https://docs.djangoproject.com/en/1.10/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2012-07-30
    • 2014-03-24
    • 1970-01-01
    • 2016-10-20
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多