我正试图从另一个python脚本访问我的Django(v1.10)app DB,但这样做有些困难。
这是我的文件和文件夹结构:
store
store
__init.py__
settings.py
urls.py
wsgi.py
store_app
__init.py__
admin.py
apps.py
models.py
...
db.sqlite3
manage.py
other_script.py
根据Django's documentations我的other_script.py
看来如下:
import django
from django.conf import settings
settings.configure(DEBUG=True)
django.setup()
from store.store_app.models import MyModel
但它会生成一个运行时错误:
RunTimeError: Model class store.store_app.models.MyModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
我应该注意我的INSTALLED_APPS
列表包含store_app
作为它的最后一个元素。
如果我尝试传递这样的配置:
import django
from django.conf import settings
from store.store_app.apps import StoreAppConfig
settings.configure(StoreAppConfig, DEBUG=True)
django.setup()
from store.store_app.models import MyModel
我得到:
AttributeError: type object 'StoreAppConfig has no attribute 'LOGGING_CONFIG'.
如果我编辑settings.py
并添加LOGGING_CONFIG=None
,则会得到另一个缺少属性的错误,依此类推。
如有任何建议,将不胜感激。
试试这个
这个脚本可以在系统中的任何地方使用。
我发现
django-extensions
包最有用。你可以找到它here在安装并将其添加到已安装的应用程序之后,您只需要创建一个名为
scripts
的目录,创建一个文件并通过python manage.py runscript file_name
运行它只要记住文件必须有一个入口点。入口点是一个名为
run
的方法,它必须存在,并且在终端中运行python manage.py runscript file_name
后将运行这听起来像是Django Management commands.的一个很好的用例,它有额外的好处,您可以从cron、命令行直接运行它,或者从django内部调用它。这使脚本可以完全访问与主项目相同的设置和环境变量。
如果你把它移到一个合适的目录中-以这里的store为例,而不是建议,它应该可以工作。
相关问题 更多 >
编程相关推荐