gpt4 book ai didi

python - 在脚本中使用 Django 模型

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:59 25 4
gpt4 key购买 nike

我有一个 xml 解析器,它会将数据存储到 MySQL 数据库中,作为 django 应用程序的一部分。解析器旨在每天运行,捕获一些测试输出:

`dbsync.py`:

1 #!/usr/bin/env python
2 import os
3 os.environ['DJANGO_SETTINGS_MODULE'] = 'autotester.settings'
4
5 import xml_parser
6 from models import *

Django 项目称为 autotesterapp 称为 autoreporter。当我执行

python dbsync.py

我得到:

Traceback (most recent call last):
File "autoreporter/dbsync.py", line 6, in <module>
from models import *
File "/root/autotester/autoreporter/models.py", line 1, in <module>
from django.db import models
File "/usr/lib/python2.7/dist-packages/django/db/models/__init__.py", line 5, in <module>
from django.db.models.query import Q
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 17, in <module>
from django.db.models.deletion import Collector
File "/usr/lib/python2.7/dist-packages/django/db/models/deletion.py", line 4, in <module>
from django.db.models import signals, sql
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/__init__.py", line 4, in <module>
from django.db.models.sql.subqueries import *
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/subqueries.py", line 12, in <module>
from django.db.models.sql.query import Query
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 22, in <module>
from django.db.models.sql import aggregates as base_aggregates_module
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/aggregates.py", line 9, in <module>
ordinal_aggregate_field = IntegerField()
File "/usr/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 116, in __init__
self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 54, in __getattr__
self._setup(name)
File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 49, in _setup
self._wrapped = Settings(settings_module)
File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 132, in __init__
% (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'autotester.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named autotester.settings

如何设置 DJANGO_SETTINGS_MODULE,以便正确执行 dbsync.py 脚本?

最佳答案

两个问题

  1. 您需要从您的应用程序导入模型,因此只要您的 Django 项目位于 PYTHONPATH 中,您就可以通过以下方式简单地导入应用程序模型:

从 autoreporter.models 导入 *

或者做一个相对导入,如果 dbsync.py(从你的回溯中看)在应用程序目录中。

from .models import *
  1. 将 Django 项目添加到 PYTHONPATH。你需要让 PYTHONPATH 中的 Django 项目可以从你的 dbsync.py 访问它(前提是它在你的 django 应用程序目录中),快速简单的解决方法是在你的dbsync.py 的代码。

    import sys
    import os
    ##get project directory
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    ##get project parent directory and add to python path using sys.path.append
    SYS_PATH = os.path.dirname(BASE_DIR)
    if SYS_PATH not in sys.path:
    sys.path.append(SYS_PATH)
    os.environ['DJANGO_SETTINGS_MODULE'] = 'autotester.settings'

关于python - 在脚本中使用 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com