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

如何从SQLAlchemy ORM模型中单独获取对应表的列名

从SQLAlchemy ORM模型提取列名的方法

首先你可以根据实际需求,选择提取两种不同的列名:Python类属性名(代码里定义的类字段名)、数据库实际列名(Column的name参数指定的库表字段名),对应方法如下:

  • 方法1:直接通过模型元数据提取(无需构造查询,性能最优)
    提取数据库实际列名的代码:

    db_col_names = [col.name for col in student.__table__.columns]
    # 你的示例模型运行后得到结果:['Name', 'roll no']
    

    提取Python类属性名的代码:

    orm_attr_names = student.__mapper__.c.keys()
    # 你的示例模型运行后得到结果:['name', 'Id']
    
  • 方法2:通过查询对象的column_descriptions属性提取
    你原有代码存在语法错误,修正后也可以实现需求:

    # 修正点:去掉query后多余的点,无过滤条件可省略filterby
    r = session.query(student)
    col_names = [item['name'] for item in r.column_descriptions]
    

额外提示:你当前的ORM定义存在几处语法错误,会导致运行报错,建议修正:

  • 类定义关键字为小写class,类名建议遵循大驼峰命名规范
  • __tablename__需要用等号赋值,不是冒号
  • 主键参数应为primary_key=True,是带下划线的参数名,值为布尔类型,不是字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:36:01