Multiple databases
SQLAlchemy 提供了一些分区策略,以便在每个会话中使用多个数据库。以下是来自 SQLAlchemy 文档的一个示例:
from sqlalchemy.orm.session import sessionmaker, Session
engine1 = create_engine("postgresql+psycopg2://db1")
engine2 = create_engine("postgresql+psycopg2://db2")
Session = sessionmaker()
# 将 User 操作绑定到 engine 1,将 Account 操作绑定到 engine 2
Session.configure(binds={User: engine1, Account: engine2})使用这个 Session,User 表将位于 engine1,而 Account 表将位于 engine2。
在实例化 Admin 对象时,您可以使用您已有的 sessionmaker 工厂:
from sqladmin import Admin
admin = Admin(app=app, session_maker=Session)
admin.add_view(...)这与其他地方使用 engine 参数不同,现在您可以使用 sessionmaker 工厂。
提示
除了用于分区外,如果您的应用程序只有一个数据库,您也可以使用 sessionmaker 工厂,而不是直接使用 engine。SQLAdmin 在内部会为您的 engine 创建一个 sessionmaker,但是如果您传递一个自定义的 sessionmaker,则可以保留您在会话中的任何配置。
最后更新于