我有一个专门用于 Django 的数据库。我遇到了一个简单的问题。对于登录中的用户身份验证,我需要使用来自另一个数据库(mysql)和表的数据。这两个表都在同一台服务器中。我怎样才能做到这一点?谢谢
问问题
254 次
1 回答
0
您需要在settings.py
. 您应该通读设置多个数据库文档。这很简单。配置并同步数据库后,您可以手动为 a 选择数据库,QuerySet
如下所示:
Model.objects.using('database').all()
更新:
要为模型指定连接,您可以定义 aRouter
如下。
from django.db import connections
class MyRouter(object):
"""
This router object will take care of the database
operations for models.
"""
def db_for_read(self, model, **hints):
if hasattr(model,'connection_name'):
return model.connection_name
return None
def db_for_write(self, model, **hints):
if hasattr(model,'connection_name'):
return model.connection_name
return None
def allow_syncdb(self, db, model):
if hasattr(model,'connection_name'):
return model.connection_name == db
return db == default
然后对于models.py中的模型,您可以执行以下操作:
class MyModel(models.Model):
connection_name="filename"
更新#2
你可以在任何你喜欢的地方设置路由器。您需要做的就是将路由器路径传递给文件中的DATABASE_ROUTERS
变量settings.py
。为了代码的清洁和组织,我通常routers.py
在我的应用程序文件夹下的单独文件中执行此操作,然后设置DATABASE_ROUTERS
例子:
DATABASE_ROUTERS = ['myapp.routers.MyRouter',]
于 2012-12-28T08:46:41.513 回答