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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
python3学生名片管理v2.0版
Nov 29 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
python定义类self用法实例解析
Jan 22 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Python爬虫中Selenium实现文件上传
Dec 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
无限级别菜单的实现
2006/10/09 PHP
浅析php数据类型转换
2014/01/09 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
vue cli2.0单页面title修改方法
2018/06/07 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
Delphi工程师笔试题
2013/09/21 面试题
家长对小学生的评语
2014/01/28 职场文书
消防工作实施方案
2014/06/09 职场文书
平面设计专业求职信
2014/08/09 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
安全保证书格式
2015/02/28 职场文书
庆祝教师节活动总结
2015/03/23 职场文书