Django app配置多个数据库代码实例


Posted in Python onDecember 17, 2019

这篇文章主要介绍了Django app配置多个数据库代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

每个app使用不同的数据库

1. 配置数据库连接

# settings.py
# DATABASES中必须要有default字段
DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'db',
    'USER': '',
    'PASSWORD': '',
    'HOST': "localhost",
    'OPTIONS': {'init_command': 'SET default_storage_engine=INNODB;'}
    },
  'db1': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'db1',
    'USER': '',
    'PASSWORD': '',
    'HOST': "localhost",
    'OPTIONS': {'init_command': 'SET default_storage_engine=INNODB;'}
  }
  }

2. 配置数据库路由

# settings.py
DATABASES_APPS_MAPPING = {
  'app1': 'default',
  'app2': 'db1',
}

DATABASE_ROUTERS = ['utils.database_router.DatabaseAppsRouter']

3. 数据库路由文件:

from django.conf import settings


class DatabaseAppsRouter(object):
  def db_for_read(self, model, **hints):
    app_label = model._meta.app_label
    if app_label in settings.DATABASES_APPS_MAPPING:
      return settings.DATABASES_APPS_MAPPING[app_label]
    return None

  def db_for_write(self, model, **hints):
    app_label = model._meta.app_label
    if app_label in settings.DATABASES_APPS_MAPPING:
      return settings.DATABASES_APPS_MAPPING[app_label]
    return None

至此,使用app1的model会访问default数据库,使用app2的model会访问db1数据库

同一个app下使用不同数据库

只需要在model class中修改app_label的值即可,app_label默认为此model所在app的名称

class Book2(models.Model):
  author = models.CharField(max_length=1024, blank=True, null=True)
  title = models.CharField(max_length=1024)

  class Meta:
    app_label = 'db1'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中optionParser模块的使用方法实例教程
Aug 29 Python
python遍历类中所有成员的方法
Mar 18 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
Python实现Windows上气泡提醒效果的方法
Jun 03 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
python中正则表达式与模式匹配
May 07 Python
PyCharm下载和安装详细步骤
Dec 17 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
python和go语言的区别是什么
Jul 20 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
python关闭占用端口方式
Dec 17 #Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 #Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 #Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 #Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 #Python
python主线程与子线程的结束顺序实例解析
Dec 17 #Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 #Python
You might like
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
php学习之流程控制实现代码
2011/06/09 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
学习php开源项目的源码指南
2014/12/21 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
JS delegate与live浅析
2013/12/21 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
Python中的map、reduce和filter浅析
2014/04/26 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
python 搜索大文件的实例代码
2019/07/08 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
Python descriptor(描述符)的实现
2020/11/15 Python
python中reload重载实例用法
2020/12/15 Python
介绍一下gcc特性
2012/01/20 面试题
商场经理竞聘演讲稿
2014/01/01 职场文书
微笑服务标语
2014/06/24 职场文书
卖房授权委托书样本
2014/10/05 职场文书
刘公岛导游词
2015/02/05 职场文书
党员承诺书范文2015
2015/04/27 职场文书
给校长的建议书范文
2015/09/14 职场文书
聘任书格式及范文
2015/09/21 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL