07 · SQLMODEL

共享 SQLAlchemy 的事务基础

SQLModelAdapter 与 SQLAlchemyAdapter 使用相同的 Session、事务和查询实现。

SQLModelAdapter 继承 SQLAlchemyAdapter。它是一个明确的语义入口,不干预 SQLModel 业务模型的基础字段定义。

安装

pip install "ormate[sqlmodel]"

共享事务

绑定到同一个 Database 后,SQLAlchemy 和 SQLModel 的操作可以放在同一个事务中。

from ormate import ModelRepository, SQLAlchemyAdapter, SQLModelAdapter

audit_logs = ModelRepository(SQLAlchemyAdapter(db), AuditLog)
tasks = ModelRepository(SQLModelAdapter(db), Task)

async with db:
    await audit_logs.add({"id": 1, "message": "task created"})
    await tasks.add({"title": "publish package"})

任一操作抛出异常时,外层作用域会回滚同一个事务。

结构化查询

SQLModel 映射字段可以直接用于 ormate DSL:

active_tasks = await tasks.find(eq(Task.active, True))

复杂 SQL 查询仍可以直接传递 SQLAlchemy Select。

ESC

输入关键词开始搜索文档。

已复制到剪贴板