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实现基本线性数据结构
Aug 22 Python
Python实现找出数组中第2大数字的方法示例
Mar 26 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
python 格式化输出百分号的方法
Jan 20 Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 Python
tensorflow 模型权重导出实例
Jan 24 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
Python使用Excel将数据写入多个sheet
May 16 Python
Python数据库封装实现代码示例解析
Sep 05 Python
Python如何使用vars返回对象的属性列表
Oct 17 Python
Python中pass的作用与使用教程
Nov 13 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 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
咖啡语言
2021/03/03 咖啡文化
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
PHP的拦截器实例分析
2014/11/03 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
实例讲解React 组件
2020/07/07 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
python类中super() 的使用解析
2019/12/19 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
2014年毕业演讲稿范文
2014/05/13 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
物业品质提升方案
2014/06/08 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
婚宴父母致辞
2015/07/27 职场文书
oracle索引总结
2021/09/25 Oracle