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采用raw_input读取输入值的方法
Aug 18 Python
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
利用Python实现图书超期提醒
Aug 02 Python
用python实现百度翻译的示例代码
Mar 09 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
django框架模板语言使用方法详解
Jul 18 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
May 12 Python
Python面向对象之成员相关知识总结
Jun 24 Python
pycharm无法安装cv2模块问题
May 20 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 md5下16位和32位的实现代码
2008/04/09 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
csdn 批量接受好友邀请
2009/02/19 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
vue实现留言板todolist功能
2017/08/16 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python实现的简单排列组合算法示例
2018/07/04 Python
pygame实现飞机大战
2020/03/11 Python
Python urllib.request对象案例解析
2020/05/11 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
Django Form常用功能及代码示例
2020/10/13 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
Java中实现多态的机制
2015/08/09 面试题
异常和异常类的概念
2014/09/12 面试题
数据库方面面试题
2012/04/22 面试题
培训主管的岗位职责
2013/11/23 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
小学生秋游活动方案
2014/02/23 职场文书
Oracle用户管理及赋权
2022/04/24 Oracle
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技