gpt4 book ai didi

mysql - 如何在Django中自动切换多个数据库服务器?

转载 作者:行者123 更新时间:2023-11-29 10:31:09 25 4
gpt4 key购买 nike

我已经设置了一个主远程 MySQL 数据库服务器,并将其副本配置为我的 Django 应用程序的从数据库。两者都在亚马逊 ubuntu ec2 实例上运行。如何配置 Django 在主数据库宕机时自动访问从数据库?

最佳答案

Djangor使用db router来解决这个问题,我给你举个例子:

class DBRouter(object):
"""
A router to control all database operations on models in the
auth application.
"""
def db_for_read(self, model, **hints):
"""
Attempts to read auth models go to auth_db.
"""
if model._meta.app_label == 'xxx':
return 'salvedb' # this name you defined in settings of django project
return None

def db_for_write(self, model, **hints):
"""
Attempts to write auth models go to auth_db.
"""
if model._meta.app_label == 'xxx':
return 'salvedb'
return None

def allow_relation(self, obj1, obj2, **hints):
"""
Allow relations if a model in the auth app is involved.
"""
#if obj1._meta.app_label == 'auth' or \
# obj2._meta.app_label == 'auth':
# return True
return None

def allow_migrate(self, db, app_label, model_name=None, **hints):
"""
Make sure the auth app only appears in the 'auth_db'
database.
"""
#if app_label == 'auth':
# return db == 'auth_db'
return None

并将此路由器添加到您的设置中:

DATABASE_ROUTERS = ['path.routers.DBRouter']

或者你可以阅读django官网的文档:https://docs.djangoproject.com/en/1.11/topics/db/multi-db/#automatic-database-routing

关于mysql - 如何在Django中自动切换多个数据库服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385689/

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