开发者社区 问答 正文

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

Flask编程,采用的ORM是SQLAlchemy。

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

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

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

谢谢!

展开
收起
a123456678 2016-06-24 11:37:18 3865 分享 版权
2 条回答
写回答
取消 提交回答
  • 码农|Coder| Pythonista
    2019-07-17 19:46:46
    赞同 展开评论
  • 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()

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