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 相关文章推荐
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
利用Python实现微信找房机器人实例教程
Mar 10 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
python中的函数递归和迭代原理解析
Nov 14 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
Python预测2020高考分数和录取情况
Jul 08 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
OpenCV-Python实现图像平滑处理操作
Jun 08 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调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
基于jquery & json的省市区联动代码
2012/06/26 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
Python计算程序运行时间的方法
2014/12/13 Python
Python2随机数列生成器简单实例
2017/09/04 Python
python实现简易内存监控
2018/06/21 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
文案策划求职信
2014/04/14 职场文书
社团活动总结怎么写
2014/06/30 职场文书
离婚案件上诉状
2015/05/23 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
MySQL Router的安装部署
2021/04/24 MySQL
Python初学者必备的文件读写指南
2021/06/23 Python
Python编程编写完善的命令行工具
2021/09/15 Python