Flask中SqlAlchemy的读写分离配置

本文讲述了在Flask项目中,使用SqlAlchemy如何配置实现读写分离的需求。作者在查找资料过程中发现Flask-SqlAlchemy的bind功能不满足需求,于是参考了SqlAlchemy官方文档和相关博客,自行编写了一个简单的读写分离解决方案。最终效果是通过DBManager类的session_ctx上下文管理器来决定请求是发送到主库还是从库。
摘要由CSDN通过智能技术生成

缘起

最近有个项目,需要提供web api出来,我很自然的选择了flask + sqlalchemy的搭配。逻辑实现上没有说的,但是到后面打算做读写分离的时候,突然发现 flask跟sqlalchemy都没有直接提供读写分离的配置。到时再最开始时使用Flask-SqlAlchemy的时候提到了有bind,但是使用起来不是很方便,不能满足我的要求。于是在网上搜索了一些,中文的资料也没有满足我的要求的。到时再google的时候,发现了一篇英文博客,于是放弃了使用Flask-SqlAlchemy,自己实现了一个简单的读写分离

需求

读写分离,我的数据表定义只有一个,通过从sqlalchemy拿到的session来决定我的这个请求时发到主库还是从库。最后达到的效果是这样的

with db_manager.session_ctx(bind='master') as session:
    session.query(....).filter(....)

# 默认走从库 
with db_manager.session_ctx() <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值