这篇文章主要介绍了Django应用程序配置多个数据库代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
每个应用使用不同的数据库
<强> 1。配置数据库连接
强>
# settings.py #数据库中必须要有默认字段 数据库={ “默认”:{ “发动机”:“django.db.backends.mysql”, “名称”:“数据库”, “用户”:”, “密码”:”, “主机”:“localhost”, “选项”:{“init_command”:“设置default_storage_engine=INNODB;”} }, “db1”: { “发动机”:“django.db.backends.mysql”, “名称”:“db1”, “用户”:”, “密码”:”, “主机”:“localhost”, “选项”:{“init_command”:“设置default_storage_engine=INNODB;”} } }
<强> 2。配置数据库路由
强>
# settings.py DATABASES_APPS_MAPPING={ “app1”:“违约”, “app2”:“db1”, } DATABASE_ROUTERS=[' utils.database_router.DatabaseAppsRouter ']
<强> 3。数据库路由文件:
强>
django。配置导入设置 类DatabaseAppsRouter(对象): def db_for_read(自我、模型* *提示): app_label=model._meta.app_label 如果app_label settings.DATABASES_APPS_MAPPING: 返回settings.DATABASES_APPS_MAPPING [app_label] 回来没有 def db_for_write(自我、模型* *提示): app_label=model._meta.app_label 如果app_label settings.DATABASES_APPS_MAPPING: 返回settings.DATABASES_APPS_MAPPING [app_label] 返回所有
至此,使用app1的模型会访问违约数据库,使用app2的模型会访问db1数据库
<强>同一个app下使用不同数据库
强>
只需要在模型类中修改app_label的值即可,app_label默认为所此模型在应用的名称
类Book2 (models.Model): 作者=模型。CharField (max_length=1024,空白=True, null=True) title=models.CharField (max_length=1024) 类元: app_label=' db1 '
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。