小编Kon*_*wau的帖子

Django和只读数据库连接

假设一个应该使用两个MySQL数据库的Django应用程序:

  • default- 用于存储由模型表示的数据AB(读写访问)
  • support- 用于导入由模型表示的数据CD(只读访问)

support数据库是一个外部应用程序的一部分,并且不能修改.

由于Django的应用程序使用内置的ORM的模型AB我想它应该使用同样的ORM的模型CD,即使它们映射到外部数据库表(support.)

为了实现我定义的模型C,D如下:

from django.db import models


class ExternalModel(models.Model):
    class Meta:
        managed = False
        abstract = True


class ModelC(ExternalModel):
    some_field = models.TextField(db_column='some_field')

    class Meta(ExternalModel.Meta):
        db_table = 'some_table_c'


class ModelD(ExternalModel):
    some_other_field = models.TextField(db_column='some_other_field')

    class Meta(ExternalModel.Meta):
        db_table = 'some_table_d'
Run Code Online (Sandbox Code Playgroud)

然后我定义了数据库路由器:

from myapp.myapp.models import ExternalModel


class DatabaseRouter(object):
    def db_for_read(self, model, …
Run Code Online (Sandbox Code Playgroud)

python mysql database django

15
推荐指数
3
解决办法
6861
查看次数

标签 统计

database ×1

django ×1

mysql ×1

python ×1