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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
Python多线程编程(一):threading模块综述
Apr 05 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
python实现图像拼接
Mar 05 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
python matlab库简单用法讲解
Dec 31 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
服务器端解压缩zip的脚本
2006/12/22 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
php查看当前Session的ID实例
2015/03/16 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
js+css在交互上的应用
2010/07/18 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
Python的面向对象思想分析
2015/01/14 Python
python通过索引遍历列表的方法
2015/05/04 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
python数据结构之列表和元组的详解
2017/09/23 Python
python实现感知器
2017/12/19 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
优秀学生干部个人的自我评价
2013/10/04 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript