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学习笔记(一)(基础入门之环境搭建)
Jun 05 Python
在Python程序中操作文件之isatty()方法的使用教程
May 24 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
通过实例解析python描述符原理作用
Jan 22 Python
Pycharm Git 设置方法
Sep 15 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
python3实现常见的排序算法(示例代码)
Jul 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
PHP里的中文变量说明
2011/07/23 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
python使用post提交数据到远程url的方法
2015/04/29 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
计算机大学生的自我评价
2013/10/15 职场文书
人事专员岗位职责
2013/11/20 职场文书
大学社团活动总结
2014/04/26 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
接待员岗位职责范本
2015/04/15 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python