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