SQLAlchemy 初始化插件¶
SQLAlchemyInitPlugin 为应用程序添加功能,支持将 Litestar 与 SQLAlchemy 一起使用。
该插件:
通过依赖注入使 SQLAlchemy 引擎和会话可用。
在应用程序的状态中管理 SQLAlchemy 引擎和会话工厂。
配置在发送响应之前调用的
before_send处理程序。在签名命名空间中包含相关名称以帮助解析注解类型。
依赖项¶
该插件使引擎和会话可用于注入。
上面的示例说明了如何在处理程序中访问引擎和会话,与所有其他依赖项一样,它们也可以注入到其他依赖函数中。
重命名依赖项¶
您可以通过在插件配置上设置 engine_dependency_key 和 session_dependency_key 属性来更改引擎和会话绑定的名称。
配置发送前处理程序¶
该插件配置在发送响应之前调用的 before_send 处理程序。默认处理程序关闭会话并将其从连接范围中删除。
您可以通过在配置对象上设置 before_send_handler 属性来更改处理程序。例如,有一个替代处理程序可用,它将在成功时提交会话并在失败时回滚。
配置插件¶
SQLAlchemyAsyncConfig 和 SQLAlchemySyncConfig 都有一个 engine_config 属性,用于配置引擎。engine_config 属性是 EngineConfig 的实例,并公开 SQLAlchemy 引擎可用的所有配置选项。
SQLAlchemyAsyncConfig 类和 SQLAlchemySyncConfig 类还有一个 session_config 属性,用于配置会话。根据配置对象的类型,这是 AsyncSessionConfig 或 SyncSessionConfig 的实例。这些类公开 SQLAlchemy 会话可用的所有配置选项。
最后,SQLAlchemyAsyncConfig 类和 SQLAlchemySyncConfig 类公开配置选项以控制其行为。
有关更多信息,请参阅参考文档。
示例¶
下面的示例是初始化插件使用的完整演示。熟悉前面部分的读者可能会注意到在处理程序中管理与 SQLAlchemy 对象之间的转换所涉及的额外复杂性。继续阅读以了解 SQLAlchemySerializationPlugin 如何有效地处理这种增加的复杂性。