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编写一个模仿CPU工作的程序
Apr 16 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
Jun 30 Python
python中字符串类型json操作的注意事项
May 02 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
详解Python的三种可变参数
May 08 Python
解决yum对python依赖版本问题
Jul 05 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Python中Subprocess的不同函数解析
Dec 10 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
解决python 输出是省略号的问题
2018/04/19 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
python爬取网页转换为PDF文件
2018/06/07 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
python队列原理及实现方法示例
2019/11/27 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
Django中ORM的基本使用教程
2020/12/22 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
四风对照检查材料思想汇报
2014/09/20 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
升学宴答谢词
2015/01/05 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
《我是什么》教学反思
2016/02/16 职场文书