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 24 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
python微信公众号开发简单流程
Mar 23 Python
详解Python字典小结
Oct 20 Python
python中对数据进行各种排序的方法
Jul 02 Python
python代理工具mitmproxy使用指南
Jul 04 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
一些关于python 装饰器的个人理解
Aug 31 Python
Python eval函数介绍及用法
Nov 09 Python
微信小程序调用python模型
Apr 21 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中break及continue两个流程控制指令区别分析
2011/04/18 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
php实现socket推送技术的示例
2017/12/20 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
如何基于python测量代码运行时间
2019/12/25 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
flask开启多线程的具体方法
2020/08/02 Python
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
学生手册评语
2014/05/05 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书