开发者社区 问答 正文

SQLAlchemy 是否支持多库,如何支持

Flask编程,采用的ORM是SQLAlchemy。

在企业的多租户业务中,要给A企业开通账号管理,需要建立独立的“分库”,B企业一次类推。

即:在企业服务,不同企业在多租户服务中的库表是分离的。

请问: SQLAlchemy 是否支持多库;如何处理 SQLAlchemy 的动态分库的创建?

谢谢!

展开
收起
a123456678 2016-06-23 16:24:37 2775 分享 版权
1 条回答
写回答
取消 提交回答
  • After pondering on jd's answer I was able to achieve the same result for postgresql 9.2, sqlalchemy 0.8, and flask 0.9 framework:
    from sqlalchemy import event
    from sqlalchemy.pool import Pool
    @event.listens_for(Pool, 'checkout')
    def on_pool_checkout(dbapi_conn, connection_rec, connection_proxy):
    
    tenant_id = session.get('tenant_id')
    cursor = dbapi_conn.cursor()
    if tenant_id is None:
        cursor.execute("SET search_path TO public, shared;")
    else:
        cursor.execute("SET search_path TO t" + str(tenant_id) + ", shared;")
    dbapi_conn.commit()
    cursor.close()

    http://stackoverflow.com/questions/13372001/multi-tenancy-with-sqlalchemy 这个不能够全部解答我的问题;但是整体上给了我一个思路。
    很棒的解决方案;需要的同学可以自己读读。

    2019-07-17 19:46:32
    赞同 展开评论
问答分类:
问答地址: