SQLAlchemy 2.x中JSON类型的正确Mapped映射注解是什么?
SQLAlchemy JSON类型的Mapped注解方案
- 直接用
dict是可行的,这也是很多日常场景里的常用写法。 - 要是追求更严谨的类型约束,可根据JSON结构选择不同方案:
- 若JSON是固定键值对结构,推荐用
TypedDict定义结构化类型,搭配Mapped使用,能在代码层面做更精准的类型校验:from typing import TypedDict, Mapped from sqlalchemy.orm import mapped_column from sqlalchemy import JSON class UserSettings(TypedDict): theme: str auto_save: bool class User(Base): __tablename__ = "users" id: Mapped[int] = mapped_column(primary_key=True) settings: Mapped[UserSettings] = mapped_column(JSON) - 若JSON结构不固定(可能包含列表、嵌套结构等),用
Mapped[dict]或Mapped[Any]都可以,前者更偏向键值对场景,后者兼容所有JSON支持的原生Python类型。
- 若JSON是固定键值对结构,推荐用
内容的提问来源于stack exchange,提问作者May Flower
相关产品推荐
相关产品推荐

