1

当我只使用 Django ORM 而不是整个 Django 引擎时,是否可以利用迁移?我的意思是,我在 Internet 的某个地方找到了该脚本:

#!/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- 我不知道该怎么做。

4

2 回答 2

2

当然,您可以使用您认为有用的 Django 的任何部分,而无需完全创建一个真正的 Django 项目。

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

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

django-admin.py startproject <projectname>

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

python manage.py inspectdb > models.py

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

manage.py migrate <appname>
于 2013-02-06T09:36:56.657 回答
1

您不必使用完整的 Django 堆栈(即模板、URL 解析等),但您可能必须创建一个 Django 应用程序,因为 South 在应用程序上工作。你可以用一些技巧将所有必要的代码塞进一个文件中(这篇文章解释了如何),但恕我直言,这不值得付出努力。只需将适当的应用程序创建为带有models.py文件的模块即可。

您不需要 manage.py,因为您可以从代码中运行管理命令。

于 2013-02-06T10:58:17.853 回答