Django的多数据库与读写分离
1.多个数据库
- settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'db2': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db2.sqlite3'),
    },
}
- 迁移其他的数据库
python manage.py migrate --database db2
2.读写分离
2.1手动指定
models.Student.objects.using('db2').all()
obj = models.Student.objects.using('db2').get(name='zhazha')
obj.name = 'star'
obj.save(using='default')
2.4自动选择
- settings配置:
DATABASE_ROUTERS = ['myrouter.Router']
- 创建 router.py
class Router:
    """
    读写分离
    """
    def db_for_write(self, model, **kwargs):
        return 'db2'
    def db_for_read(self, model, **kwargs):
        return 'default'
- 一主多从
class Router:
    """
    一主多从
    """
    def db_for_write(self, model, **kwargs):
        return 'db1'
    def db_for_read(self, model, **kwargs):
        return random.choices['db2', 'db3', 'db4']
- 分库分表
class Router:
    """
    分库分表
    app01  model   db1
    app02  model   db2
    """
    def db_for_write(self, model, **kwargs):
        app_name = model._meta.app_label
        if app_name == 'app01':
            return 'db1'
        elif app_name == 'app02':
            return 'db2'
    def db_for_read(self, model, **kwargs):
        app_name = model._meta.app_label
        if app_name == 'app01':
            return 'db1'
        elif app_name == 'app02':
            return 'db2'
Django的多数据库与读写分离的更多相关文章
- 利用oneproxy部署mysql数据库的读写分离
		实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 oneproxy-rhel ... 
- MySQL搭建主从数据库 实现读写分离
		首先声明,实际生产中,网站为了提高用户体验,性能等,将数据库实现读写分离是有必要的,我们让主数据库去写入数据,然后当用户查询的时候,然后在从数据库读取数据,故能减轻数据库的压力,实现良好的用户体验! ... 
- Mycat - 实现数据库的读写分离与高可用
		前言 开心一刻 上语文课,不小心睡着了,坐在边上的同桌突然叫醒了我,并小声说道:“读课文第三段”.我立马起身大声读了起来.正在黑板写字的老师吓了一跳,老师郁闷的看着我,问道:“同学有什么问题吗?”,我 ... 
- 基于 EntityFramework 的数据库主从读写分离服务插件
		基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1 版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 ... 
- 基于 EntityFramework 的数据库主从读写分离架构 - 目录
		基于 EntityFramework 的数据库主从读写分离架构 回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目 ... 
- 基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现
		回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录: src\ NDF.Data.EntityFramew ... 
- 如何轻松实现MySQL数据库的读写分离和负载均衡?
		配置好了 Mysql 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡.读写分离和负载均衡是 Mysql 集群的基础需求,MaxScale 就可以帮着 ... 
- springboot+mybatis实现数据库的读写分离
		介绍 随着业务的发展,除了拆分业务模块外,数据库的读写分离也是常见的优化手段.方案使用了AbstractRoutingDataSource和mybatis plugin来动态的选择数据源选择这个方案的 ... 
- 利用mysql-proxy进行mysql数据库的读写分离
		实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 mysql-proxy-0 ... 
随机推荐
- 能无缝嵌入Excel的报表工具,报表轻松做!
			现在很多人做数据分析会被推荐选择去用编程R和Python.PowerBI.Tableau.Qlik.Smartbi... 从目前数据分析的行业来说,Excel是世界上使用人数最多的报表分析工具,没有之 ... 
- 技术小白的也能独立完成数据分析,这款BI系统你值得拥有
			是否有很多小白跟我一样,不会编程代码,又觉得excel操作太繁琐了,一直苦苦不知道要怎么做数据分析.前段时间我使用了一款bi系统,简直太方便了!拖拉拽就能制作分析图表.点击就能应用智能分析功能,如果这 ... 
- 【C# 并发编程】开端
			1,异步编程 异步编程就是使用future模式(又称promise)或者回调机制来实现(Non-blocking on waiting). 如果使用回调或事件来实现(容易callback hell), ... 
- 【windows 操作系统】协程
			◆ 协程 由程序员手动切换. 属于线程,是在线程里面跑的,因此协程又称微线程和线程等.由于不用进行线程上下文切换,因此效率会更高. 资源: 拥有自己的栈空间,大小动态调整. 安全性: 拥有自己的寄存器 ... 
- c# TabControl控件中TabPage选项卡切换时触发的事件
			选项卡切换触发的是tabcontrol控件的SelectedIndexChanged事件. 当tabcontrol控件的任何一个tabpage被点击或选择,即发生SelectedIndexChange ... 
- vue--按需加载的3种方式(解决网页首次加载速度慢的问题)
			一.vue的异步组件加载 使用异步组件加载,打包的时候会将每个组件分开打包到不同的js文件中: {path: '/index', name: 'index', meta:{ title:'首页', r ... 
- LeetCode-096-不同的二叉搜索树
			不同的二叉搜索树 题目描述:给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数. 二叉搜索树(Binary Search ... 
- Semantic Text Similarity
			stop word是指像the,is ,are等等方向的词 stemming意思就是将形式化为一样的形式,比如lists,listed,list都可以化为list形式. 
- LGP2490题解
			有点儿神秘? 根据他这个题意说的,白子向右的第一个一定是对应的黑子啊. 所以棋子的绝对位置是不重要的,我们只需要考虑白子和黑子的相对位置,然后考虑用 GF 来拼凑状态就好了. 下面的 \(k\) 是题 ... 
- 1.SQL常用命令
			常用命令 连接命令 (1)conn[ect] 用法: conn 用户名/密码@网络服务名 [as sysdba/sysoper] 当用特权用户身份连接时,必须带上 as sysdba 或是 as sy ... 
