2

データベースを正しく構成しました。helloと呼ばれるデータベースのテーブルのデータにアクセスしたい場合genes。それを行うための適切な方法は何ですか?books.models import hellomodels.pyにこんにちはがないので、からはできません。データベースの遺伝子とテーブルhelloは、デフォルトのDjangoデータベースではありません。私は2つのデータベースを持っています。すでに設定しRouterました。データにアクセスしたい。どうやってやるの?ありがとう

4

1 に答える 1

1

あなたはいくつかのことをする必要があります。

settings.py

DATABASES = {
    'genes': {
        'ENGINE':   'django.db.backends.mysql',
        'NAME':     'genes',
        'USER':     'root',
        'PASSWORD': 'root',
        'HOST':     'localhost',
        'PORT':     '3360',
    },
    'default': {
        'ENGINE':   'django.db.backends.mysql',
        'NAME':     'django',
        'USER':     'root',
        'PASSWORD': 'root',
        'HOST':     'localhost',
        'PORT':     '3360',
    }
}

DATABASE_ROUTERS = ['genes.routers.GeneRouter',]

routers.py

class GeneRouter(object):
    """A router to control all database operations on models in
    the genes application"""

    def db_for_read(self, model, **hints):
        "Point all operations on genes models to 'genes'"
        if model._meta.app_label == 'genes':
            return 'remrate'
        return None

    def db_for_write(self, model, **hints):
        "Point all operations on genes models to 'genes'"
        if model._meta.app_label == 'genes':
            return 'remrate'
        return None

    def allow_syncdb(self, db, model):
        "Make sure the genes app only appears on the 'genes' db"
        if model._meta.app_label in ['south']:
            return True
        if db == 'remrate':
            return model._meta.app_label == 'genes'
        elif model._meta.app_label == 'genes':
            return False
        return None

これを設定したら、models.pyファイルを作成する必要があります。

models.py

class Hello(models.Model):
    """Hello model"""

    field1 = models.CharField(max_length=64)

    class Meta:
        db_table = u'hello'
        managed = False

これをプログラム的に行うには..

python manage.py inspectdb

これが完了すると、標準のDjangoクエリセットを使用してクエリを実行できるようになります

Hello.objects.all()
于 2013-01-01T06:08:25.170 に答える