Using django models in a script

I have a parser xmlthat will store this data in a database MySQLas part of a django application. The parser is designed for daily launch, which allows you to get some test results:

`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 *

The project Djangois called autotester, but appcalled autoreporter. When i do

python dbsync.py

I get:

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

How can I install DJANGO_SETTINGS_MODULEso that I can execute the dbsync.pyscript correctly ?

+4
source share
2 answers

Two problems

  • You need to import models from your application, so provided that your Django project is in PYTHONPATH, you can simply import application models with:

from autoreporter.models import *

, dbsync.py( ) .

from .models import *
  1. Django PYTHONPATH. Django PYTHONPATH, 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'
    
+1

, ORM, Django. script.

Django 1.7 django.

, Django. script . Django, , Django.

import django
django.setup()

import xml_parser
from .models import *
+1

All Articles