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小程序来统计测试脚本的关键字
Mar 12 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 Python
如何将python中的List转化成dictionary
Aug 15 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
Python微信操控itchat的方法
May 31 Python
简单了解python PEP的一些知识
Jul 13 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
Python存储读取HDF5文件代码解析
Nov 25 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实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
Javascript this指针
2009/07/30 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python smallseg分词用法实例分析
2015/05/28 Python
python字符串对其居中显示的方法
2015/07/11 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Python----数据预处理代码实例
2019/03/20 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
Python json读写方式和字典相互转化
2020/04/18 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
pandas针对excel处理的实现
2021/01/15 Python
市场部经理岗位职责
2014/04/10 职场文书
还款承诺书范文
2014/05/20 职场文书
文明社区申报材料
2014/08/21 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
经理聘任证明
2015/03/02 职场文书
医院党建工作总结2015
2015/05/26 职场文书
走进科学观后感
2015/06/18 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
Python List remove()实例用法详解
2021/08/02 Python