gpt4 book ai didi

python - Django 多数据库 : write to multiple databases

转载 作者:太空狗 更新时间:2023-10-30 01:55:59 24 4
gpt4 key购买 nike

使用 Django multidb,编写 router 相当容易运行主/从基础设施。但是是否可以编写一个写入 到多个数据库的路由器?我的用例是项目的集合,所有项目都在同一个域上运行。为了避免用户在每个站点上注册/登录,我想同步 contrib.authcontrib.sessions 表。这可能与 Django multidb 还是我应该研究数据库系统的复制功能(在我的例子中是 MySQL)?

最佳答案

我认为你会更好地实现 SSO 或 OAuth 服务

但是如果你想在两个数据库之间同步你的表用户,并且如果你使用自己的 UserModel,你可以这样做

class MyUser(models.Model):
name = models.CharField(max_length=100)
user = models.ForeignKey(User, unique=True)


def save(self, ...): # ALL the signature
super(MyUser, self).save(using='database_1')
super(MyUser, self).save(using='database_2')

你也可以用这样的装饰器,这样你也可以用它来同步其他表:

def save_multi_db(model_class):

def save_wrapper(save_func):
def new_save(self, *args, **kws):
super(model_class, self).save(using='database_1')
super(model_class, self).save(using='database_1')
return new_save

func = getattr(model_class, 'save')
setattr(model_class, 'save', save_wrapper(func))

return save_wrapper

# and use it like this:

@save_multi_db
class MyUser(models.Model):
....

希望这会有所帮助:)

关于python - Django 多数据库 : write to multiple databases,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041473/

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