J'ai configuré correctement la base de données. Si je veux accéder aux données de la table hello
dans la base de données appelée genes
. Quelle est la bonne façon de le faire? Je ne peux pas le faire avec books.models import hello
car je n'ai pas hello dans models.py. La base de données genes et la table hello ne sont pas la base de données par défaut de Django. J'ai deux bases de données. J'ai déjà configuré le Router
. Je veux maintenant accéder aux données. Comment puis-je faire cela? Merci
Réponse
Trop de publicités?Vous devez faire quelques choses..
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):
"""Un routeur pour contrôler toutes les opérations sur les modèles de l'application genes"""
def db_for_read(self, model, **hints):
"Redirige toutes les opérations sur les modèles genes vers 'genes'"
if model._meta.app_label == 'genes':
return 'remrate'
return None
def db_for_write(self, model, **hints):
"Redirige toutes les opérations sur les modèles genes vers 'genes'"
if model._meta.app_label == 'genes':
return 'remrate'
return None
def allow_syncdb(self, db, model):
"Assurez-vous que l'application genes n'apparaisse que dans la base de données 'genes'"
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
Une fois que vous avez configuré cela, vous devez créer le fichier models.py pour le
models.py
class Hello(models.Model):
"""Modèle Hello"""
field1 = models.CharField(max_length=64)
class Meta:
db_table = u'hello'
managed = False
Pour faire cela de manière programmatique..
python manage.py inspectdb
Une fois que cela est fait - vous devriez pouvoir effectuer une requête en utilisant des ensembles de requêtes Django standard
Hello.objects.all()