You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQLAlchemy的Enum列中动态获取Python枚举类?

获取SQLAlchemy模型Enum列对应的Python枚举类

你可以通过访问SQLAlchemy列对象的type属性,再读取其enum_class属性,直接拿到对应的Python Enum类。

针对你的代码示例的实现

# 方式1:通过模型类属性获取列
column = MyModel.cool_enum_val
# 方式2:通过表结构获取列
column = MyModel.__table__.columns.cool_enum_val

# 获取对应的枚举类
target_enum = column.type.enum_class

# 验证结果
print(target_enum.A)  # 输出: MyCoolEnum.A
print(list(target_enum))  # 输出: [<MyCoolEnum.A: 'A'>, <MyCoolEnum.B: 'B'>, <MyCoolEnum.C: 'C'>]

批量获取模型中所有Enum列的枚举类

如果需要一次性提取模型里所有Enum列对应的枚举类,可以用SQLAlchemy的inspect工具遍历列:

from sqlalchemy import inspect

def extract_enum_classes(model):
    enum_map = {}
    inspector = inspect(model)
    for col in inspector.columns:
        if isinstance(col.type, sqlalchemy.Enum):
            enum_map[col.name] = col.type.enum_class
    return enum_map

# 使用示例
model_enums = extract_enum_classes(MyModel)
print(model_enums["cool_enum_val"])  # 输出: <enum 'MyCoolEnum'>

内容的提问来源于stack exchange,提问作者Avishay Matayev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:07:00