
adaptix集成指南如何无缝接入Pydantic、msgspec与SQLAlchemy生态【免费下载链接】dataclass-factoryAn extremely flexible and configurable data model conversion library.项目地址: https://gitcode.com/gh_mirrors/da/dataclass-factoryadaptix是一个极其灵活、高度可配置的数据模型转换库data model conversion library它能让 dataclass、Pydantic 模型、msgspec Struct 与 SQLAlchemy ORM 之间自由加载load、转储dump和相互转换。本篇集成指南带你快速上手三大生态的接入方式几乎零配置即可运行。一、认识 adaptix一个库打通多种模型adaptix 将各种模型带预定义字段的类统一处理开箱即用地支持模型类型支持版本备注dataclass全部原生支持NamedTuple / TypedDict全部原生支持attrs≥ 21.3.0原生支持Pydantic≥ 2.0.0支持原生校验/序列化msgspec≥ 0.14.0支持原生 convert / to_builtinsSQLAlchemy≥ 2.0.0支持 JSON 列类型集成关键的一点是你不需要做任何特殊配置第三方库的模型装进来就能用。官方集成文档见 docs/reference/integrations.rst。二、Pydantic 集成让模型像普通数据一样流动默认情况下adaptix 会把 Pydantic 模型当作普通模型处理——模型内部定义的alias、config等参数都会被忽略行为与 dataclass 一致。当你希望复用 Pydantic 原生的校验与序列化机制比如保留Field(alias...)别名行为时只需在 Retort 的 recipe 中加入native_pydanticretort Retort( recipe[ native_pydantic(Book, to_python{by_alias: True}), ], ) book retort.load(data, Book) assert retort.dump(book) data # 转储时按别名输出完整示例见 docs/examples/reference/integrations/native_pydantic.py。 常见注意点自定义__init__只接受**kwargs这类参数字段转储顺序为常规字段 → 计算字段 → 私有属性。详见 src/adaptix/_internal/integrations/pydantic/native.py。三、msgspec 集成发挥极致性能msgspec 以性能著称adaptix 默认会像处理其他模型一样处理 msgspec Struct。如果你的业务代码依赖convert/to_builtins的特定选项例如把date类型按特定方式编解码可以用原生机制接管retort Retort( recipe[ native_msgspec(Music, to_builtins{builtin_types: [datetime.date]}), ], )native_msgspec还支持dec_hook、enc_hook、str_keys、strict等参数透传给 msgspec。示例见 docs/examples/reference/integrations/native_msgspec.py实现位于 src/adaptix/_internal/integrations/msgspec/native.py。四、SQLAlchemy 集成结构化 JSON 直存数据库这是 adaptix 最亮眼的集成之一——AdaptixJSON列类型。它基于 SQLAlchemy 的TypeDecorator让模型对象直接读写数据库 JSON 列写入时自动调用 dumper把模型序列化为 JSON 存入数据库读取时自动调用 loader把 JSON 还原为模型对象在 PostgreSQL 方言下自动升级为JSONB列类型性能更优。定义方式非常直观class AuditLogRecord(Base): __tablename__ audit_logs id: Mapped[int] mapped_column(primary_keyTrue) data: Mapped[AnyAuditLog] mapped_column(AdaptixJSON(db_retort, AnyAuditLog))随后session.add(AuditLogRecord(dataUserCreated(id1, nameSam)))即可取回来时拿到的就是 Python 模型对象。 相关实现与示例列类型实现src/adaptix/_internal/integrations/sqlalchemy/orm.py建表示例docs/examples/reference/integrations/sqlalchemy_json/preamble.py基本用法docs/examples/reference/integrations/sqlalchemy_json/basic_usage.py⚠️两个实用提醒AdaptixJSON继承自JSON类型可像普通 JSON 列一样做查询与过滤但查询走的是 JSON 表示name_mapping不会应用于查询构建器SQLAlchemy 无法追踪对象内部的属性修改若原地修改 JSON 中的嵌套字段可手动调用flag_modified标记脏数据详见 docs/examples/reference/integrations/sqlalchemy_json/mutation_tracking.py。五、快速总结接入清单场景接入方式成本Pydantic 模型转换直接用或用native_pydantic保留别名0~1 行 recipemsgspec Struct 转换直接用或用native_msgspec指定编解码0~1 行 recipe模型存入数据库 JSON 列mapped_column(AdaptixJSON(retort, 类型))1 行列定义只需安装 adaptix可选带 extras 保证版本兼容三大生态即刻可用。想深入了解字段重命名、嵌套结构、递归类型等进阶玩法可继续阅读官方文档 docs/loading-and-dumping/extended-usage.rst。 【免费下载链接】dataclass-factoryAn extremely flexible and configurable data model conversion library.项目地址: https://gitcode.com/gh_mirrors/da/dataclass-factory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考