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

Flask编程,采用的ORM是SQLAlchemy。

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

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

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

谢谢!

阅读 6k
2 个回答

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 这个不能够全部解答我的问题;但是整体上给了我一个思路。
很棒的解决方案;需要的同学可以自己读读。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题