gpt4 book ai didi

Django 副本数据保存到许多数据库

转载 作者:行者123 更新时间:2023-12-04 01:34:55 25 4
gpt4 key购买 nike

从 django 文档中,可以从数据库创建副本并定义它将写入或读取的位置。 (django multiple-database)。

然后,它为其编写代码,配置我的 DATABASE 如下:

DATABASES = {
'default': {
'NAME': 'my_write_database',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'writedatabase',
},
'replica': {
'NAME': 'replica',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'readdatabase',
},
}

并创建路由器:

class ReplicaDatabaseWriteRead(object):

route_app_labels = {..all_possible_applications}

def db_for_read(self, model, **hints):
return 'replica' # O just wanna read from 'replica'

def db_for_write(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'default' # I wanna write in default and 'reflect' to 'replica'
return None

def allow_relation(self, obj1, obj2, **hints):
db_list = (..all_possible_apps)
if obj1._state.db in db_list and obj2._state.db in db_list:
return True
return None

def allow_migrate(self, db, app_label, model_name=None, **hints):
return True

但这不能正常工作。当我写的时候,它只是写在default,不会反射(reflect)到replica。然后,当我读取 replica 时,值不会存在。

他不应该在default中写入并在replica中复制值吗?我正在使用 django-rest-framework这段代码和文档非常相似,我不知道哪里出了问题。或者我不明白 django 文档?

最佳答案

Django 没有为您解决复制的问题。

replication 的常用方法- 一个 数据库用于写入多个副本 用于读取 .复制是在数据库级别(不是 django)上完成的,即数据库配置为写入其事务日志,只读副本同步此日志并重放。

Django multiple database配置允许为读取和写入指定不同的数据库 URL,和/或为不同的应用程序甚至表指定不同的数据库——这是 database clustering 更关心的问题。 ,而不是复制。

关于Django 副本数据保存到许多数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59902868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com