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 collections模块实例讲解
Apr 07 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
学习python的前途 python挣钱
Feb 27 Python
python实现抽奖小程序
Apr 15 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
解决Python对齐文本字符串问题
Aug 28 Python
python实现发送form-data数据的方法详解
Sep 27 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
Keras自定义IOU方式
Jun 10 Python
教你怎么用Python实现多路径迷宫
Apr 29 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面向对象分析设计的经验原则
2008/09/20 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
JavaScript面象对象设计
2008/04/28 Javascript
jQuery 全选效果实现代码
2009/03/23 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
js实现文字截断功能
2016/09/14 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python从入门到精通(DAY 3)
2015/12/20 Python
Python的语言类型(详解)
2017/06/24 Python
Python 文件操作的详解及实例
2017/09/18 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
Python 函数list&read&seek详解
2019/08/28 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
一份Java笔试题
2012/02/21 面试题
介绍一下linux的文件权限
2012/02/15 面试题
怎样写好自荐信和推荐信
2013/12/26 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python