如何在Django项目之外使用manage.py syncdb,例如在Tornado中?

时间:2010-12-12 17:01:11

标签: django tornado django-syncdb

我正在浏览http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/,如果我们在Tornado需要它,我认为使用Django的部分是有趣且有用的。

根据http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/中的设置,我们如何使用manage.py syncdb

这是我到目前为止所尝试的内容: 我已经尝试将manage.py转移到与tornado项目相同的文件夹,然后运行manage.py syncdb,但它返回说找不到settings.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',

        }
    }
)

我有点在我的智慧结束。我如何在Django项目之外使用syncdb?

最佳。

1 个答案:

答案 0 :(得分:1)

如果我说得对,你可以使用--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年9月)。 Django的

DATABASES
设置has been updated since 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。