как использовать manage.py syncdb вне проекта Django, например, в Tornado? - PullRequest
0 голосов
/ 12 декабря 2010

Я просматривал http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/, и я подумал, что было бы интересно и полезно использовать части Django, если они нам нужны в Торнадо.

На основе настроек в http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/как мы можем использовать manage.py syncdb?

Вот что я пробовал до сих пор: я попытался переместить manage.py в ту же папку, что и проект tornado, и запустил manage.py syncdb, но он возвращает, говоря, что настройки.py не найден.

, чем я попытался переместить setting.py в ту же папку и снова запустил manage.py.Это говорит мне, что никаких приспособлений не найдено.На этот раз я понятия не имею, как настроить settings.py, поскольку это не проект Django.

Любые советы или мысли?

================= Обновления ======================

Привет всем, продолжая вышеизложенное, используя советы, предоставленные Agos, яя пробовал запустить python manage.py syncdb --settings = dj_tornado, и он возвращает

`"Error: Can't find the file 'settings.py'` in the directory containing 'manage.py'`. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)"

Так что я сделал, чтобы запустить django-admin.py syncdb --settings=dj_tornado, и он возвращает "django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet."

НоСтранно то, что ядро ​​базы данных установлено.Как мне исправить это?Кстати, я использую Django 1.2.3 и Tornado 0.2.

================= снова обновляется ======================

Привет всем, я применил совет, предоставленный Agos, с файлом settings.py в той же папке, что и manage.py, и выполнил командуdjango-admin.py syncdb --settings=dj_tornado.Я все еще получаю сообщение об ошибке:

django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet.

Но я уже настроил движок на основе базы данных следующим образом: в dj_tornado.py:

from django.conf import settings
settings.configure(
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3', 
            'NAME': 'dev.db',

        }
    }
)

Я немного не в себе,Как использовать syncdb вне проекта Django?

Best.

1 Ответ

1 голос
/ 12 декабря 2010

Если я правильно понял, вы можете просто использовать переключатель --settings, чтобы указать manage.py на dj_tornado.py, который в конце концов является вашим файлом настроек

Обновление 1

из справки, доступной по адресу python manage.py help:

Options:
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.

Так что я бы попробовал это:

python manage.py syncdb --settings=dj_tornado

Обновление 2

Еще одна ошибка, еще одно обновление к ответу!
Прежде всего, учтите, что этот пост довольно старый (сентябрь 2009 г.). Параметр

DATABASES
в Django обновляется с версии 1.2 .

Синтаксис в сообщении блога был:

settings.configure(DATABASE_ENGINE='sqlite3', DATABASE_NAME='dev.db')

С Django 1.2.X это точно не правильно. Это будет эквивалентная версия:

settings.configure(DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'dev.db'
    }
})

(извините за ужасное форматирование кода).

Если это все еще не будет работать, я бы подумал о создании «стандартного» файла настроек Django для импорта. Но моя ставка на синтаксис настроек БД.

Последнее обновление, клянусь

Вы пытались снова использовать django-admin.py с новым синтаксисом? Если это так и все еще не работает, минимальный файл settings.py будет именно таким:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'dev.db'
    }
}

Вы также можете сохранить исходную конфигурацию внутри dj_tornado.py и использовать settings.py просто для выполнения syncdb.

...