【问题标题】:how to use manage.py syncdb outside of Django project, such as in Tornado?如何在 Django 项目之外使用 manage.py syncdb,例如在 Tornado 中?
【发布时间】:2010-12-12 17:01:10
【问题描述】:

我正在浏览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 提供的建议,在与 manage.py 相同的文件夹中设置了一个 settings.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?

最好的。

【问题讨论】:

    标签: django tornado django-syncdb


    【解决方案1】:

    如果我没看错,你可以使用--settings 开关将manage.py 指向dj_tornado.py,毕竟这是你的设置文件

    更新 1

    来自python manage.py help的帮助:

    选项: --settings=SETTINGS 设置模块的 Python 路径,例如 “myproject.settings.main”。如果未提供,则 DJANGO_SETTINGS_MODULE 环境变量将是 用过的。

    所以我会试试这个:

    python manage.py syncdb --settings=dj_tornado

    更新 2

    另一个错误,答案的另一个更新!
    首先,考虑到那篇博文已经很老了(2009 年 9 月)。姜戈的

    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 设置文件来导入。但我赌的是 db 设置语法。

    最后一次更新,我发誓

    您是否尝试过使用新语法再次使用 django-admin.py?如果是这样,但仍然无法正常工作,那么最小的 settings.py 就是这样:

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

    您也可以将原始配置保留在 dj_tornado.py 中,并使用 settings.py 来做同步数据库。

    【讨论】:

    • 嗨,我可以知道如何使用 --settings 将 manage.py 指向 dj_tornado.py 吗?
    • 您好,感谢您的回复。我试过你的方法,我已经更新了我的问题。它有某种错误。
    • 嗨,我已经尝试过您的解决方案。它给了我一条错误消息“错误:在包含'manage.py'的目录中找不到文件'settings.py'。看来你已经自定义了东西。你必须运行django-admin.py ,将您的设置模块传递给它。(如果文件 settings.py 确实存在,它会以某种方式导致 ImportError。)”我可以知道创建“标准”Django 设置文件以导入的正确方法是什么吗?文件夹/文件结构如何?感谢您的帮助!
    • 你好,我试过了,不幸的是它没有成功。但我在这里找到了一个很好的解决方法:stackoverflow.com/questions/579511/…。它解释了设置和同步数据库的工作原理!阅读@KeyboardInterrupt 的配方
    猜你喜欢
    • 2013-05-06
    • 2014-09-07
    • 2015-07-31
    • 2011-02-13
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多