1

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()

DB を移行するまでは、私のニーズにぴったりです。持って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 はアプリケーションで動作します。必要なすべてのコードを 1 つのファイルに詰め込むこともできますが (この記事ではその方法を説明しています)、努力する価値はありません。models.pyファイルを使用して適切なアプリケーションをモジュールとして作成するだけです。

コードから管理コマンドを実行できるため、manage.py は必要ありません。

于 2013-02-06T10:58:17.853 に答える