sqlalchemy读写分离以及按用户自动匹配用户库

缘起

随着项目的不断进展,需要对mysql访问做读写分离,由于没有专业的运维人员做mysql的读写分离proxy,所以在配置了mysql主从库之后,暂定从代码中控制mysql的主从访问,同时,由于我们的数据架构是按照不同用户分库的,对于不同的用户要根据用户ID连接到用户所属库上,而标准的sqlalchemy配置并没有这部分的支持(没有查到资料,如果有大侠有更好的解决方案,求交流),所以只好自己动手丰衣足食啦 ^_^。

流程

项目使用的框架是flask,整体的流程大概是,在程序启动时,初始化一个DBProxy和DBSessionManager,然后在authentication时,根据用户的id,来连接不同的读写库,在具体的代码中调用时,根据具体业务逻辑写操作调用主库的链接,读操作调用从库的链接。

代码实现

config.py

    SQLALCHEMY_DATABASE_URI_SETTINGS = {
        'master': [],
        'slave': []
    }

DBSessionManager类

class DBSessionManager(object):
    def __init__(self):
        self.session_map = {}

    def init_app(self, app):
        self.create_sessions(app)

    def create_sessions(self, app):
        db_se
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值