如何在没有整个Django引擎的情况下使用Django ORM进行迁移?

时间:2013-02-06 09:30:39

标签: django django-models migration

当我只使用Django ORM而不是整个Django引擎时,是否可以利用迁移?我的意思是,我在互联网上找到了一个脚本:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from django.conf import settings
settings.configure(
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'roma_db',
            'USER': 'root',
            'PASSWORD': 'qweqweqwe'
        }
    },
    INSTALLED_APPS = ('south')
)
from django.db import models


class Game(models.Model):
    url = models.TextField()
    title = models.TextField()
    description=models.TextField()

    def __unicode__(self):
        return self.title

    class Meta:
        app_label = ''


def create_table(cls):
    from django.db import connection
    from django.core.management.color import no_style

    sql, references = connection.creation.sql_create_model(cls, no_style())
    cursor = connection.cursor()
    for q in sql:
        try:
            cursor.execute(q)
        except:
            pass


def main():
    create_table(Game)


if __name__ == "__main__":
    main()

在我想迁移数据库之前,它完全符合我的需求。因为我没有manage.py - 我不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

当然你可以使用Django的任何部分,你发现有用而无需完全制作一个真正的Django项目。

拥有自定义应用程序(通常使用PHP)和Django管理员用来管理数据库是很常见的。您可以使用South(即迁移)或模板引擎,或任何您认为有用的内容,而无需编写完整的站点(即使用URL模式,视图等)。

E.g。要使用South,首先需要启动一个空白项目,因为无论如何都需要manage.py和设置:

django-admin.py startproject <projectname>

然后,启动一个新应用并手动编写初始模型或使用inspectdb生成它们:

python manage.py inspectdb > models.py

将您的应用和南方添加到settings.INSTALLED_APPS,就是这样,您可以更改模型并应用更改

manage.py migrate <appname>

答案 1 :(得分:1)

您不必使用完整的Django堆栈(即模板,URL解析等),但您可能必须创建一个Django应用程序,因为South适用于应用程序。你可以用一些技巧(this post explains how)将所有必要的代码塞进一个文件中,但恕我直言,这是不值得的。只需使用models.py文件创建一个合适的应用程序。

您不需要manage.py,因为run management commands from your code.