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})

使用这个 SessionUser 表将位于 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,则可以保留您在会话中的任何配置。

最后更新于