0

我有一个专门用于 Django 的数据库。我遇到了一个简单的问题。对于登录中的用户身份验证,我需要使用来自另一个数据库(mysql)和表的数据。这两个表都在同一台服务器中。我怎样才能做到这一点?谢谢

4

1 回答 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 回答