SQLAlchemy 初始化插件

SQLAlchemyInitPlugin 为应用程序添加功能,支持将 Litestar 与 SQLAlchemy 一起使用。

该插件:

  • 通过依赖注入使 SQLAlchemy 引擎和会话可用。

  • 在应用程序的状态中管理 SQLAlchemy 引擎和会话工厂。

  • 配置在发送响应之前调用的 before_send 处理程序。

  • 在签名命名空间中包含相关名称以帮助解析注解类型。

依赖项

该插件使引擎和会话可用于注入。

上面的示例说明了如何在处理程序中访问引擎和会话,与所有其他依赖项一样,它们也可以注入到其他依赖函数中。

重命名依赖项

您可以通过在插件配置上设置 engine_dependency_keysession_dependency_key 属性来更改引擎和会话绑定的名称。

配置发送前处理程序

该插件配置在发送响应之前调用的 before_send 处理程序。默认处理程序关闭会话并将其从连接范围中删除。

您可以通过在配置对象上设置 before_send_handler 属性来更改处理程序。例如,有一个替代处理程序可用,它将在成功时提交会话并在失败时回滚。

配置插件

SQLAlchemyAsyncConfigSQLAlchemySyncConfig 都有一个 engine_config 属性,用于配置引擎。engine_config 属性是 EngineConfig 的实例,并公开 SQLAlchemy 引擎可用的所有配置选项。

SQLAlchemyAsyncConfig 类和 SQLAlchemySyncConfig 类还有一个 session_config 属性,用于配置会话。根据配置对象的类型,这是 AsyncSessionConfigSyncSessionConfig 的实例。这些类公开 SQLAlchemy 会话可用的所有配置选项。

最后,SQLAlchemyAsyncConfig 类和 SQLAlchemySyncConfig 类公开配置选项以控制其行为。

有关更多信息,请参阅参考文档。

示例

下面的示例是初始化插件使用的完整演示。熟悉前面部分的读者可能会注意到在处理程序中管理与 SQLAlchemy 对象之间的转换所涉及的额外复杂性。继续阅读以了解 SQLAlchemySerializationPlugin 如何有效地处理这种增加的复杂性。