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 生成目录树及显示文件大小的代码
Jul 23 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
Feb 04 Python
python实现简单的socket server实例
Apr 29 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
Python递归函数实例讲解
Feb 27 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
 Python 中 logging 模块使用详情
Mar 03 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
JAVA/JSP学习系列之四
2006/10/09 PHP
第1次亲密接触PHP5(1)
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
php中define用法实例
2015/07/30 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
js实现网站首页图片滚动显示
2013/02/04 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
在Django的视图中使用form对象的方法
2015/07/18 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
学校安全责任书
2014/04/14 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
先进党支部事迹材料
2014/12/24 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
Python入门之使用pandas分析excel数据
2021/05/12 Python