如何从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
相关产品推荐
相关产品推荐

