我读过 "Multiple database connections with Python + Pylons + SQLAlchemy"我了解了如何使用该技术创建多个引擎,但现在我正在寻找有关如何为这些引擎创建 Session 的建议。现在,我项目中的 Session 是根据 Pylons 约定定义的:myapp.model.meta.Session = scoped_session(sessionmaker()) 并导入为 myapp .model.Session.如果只有一个引擎,这就可以正常工作。
为多个引擎定义它的良好、可维护的方法是什么?引擎集可能会在运行时发生变化,无论其值(value)如何,因此我需要能够即时创建新的 Session,而无需将它们硬编码到模型中。
请您参考如下方法:
如果您想为每个请求选择数据库后端,一个不错的选择是调用 meta.Session(bind=get_engine_for_this_request()) 作为第一件事。这将创建具有指定参数的 session 。如果对您的情况有意义,您可以将其粘贴到 BaseController 中。
对于每个请求的多个后端,最佳方法取决于您的具体用例。如果所有后端都具有相同的架构,那么最好创建多个 ScopedSession,每个后端一个。当它们持有不同的模式时,您可以创建多个元数据对象(或声明性的基类)并将它们绑定(bind)到引擎。
