Python 使用SQLAlchemy ORM,如何获得第n列?
假设我通过SQLAlchemy的声明性系统创建了一个表Python 使用SQLAlchemy ORM,如何获得第n列?,python,sqlalchemy,Python,Sqlalchemy,假设我通过SQLAlchemy的声明性系统创建了一个表 class Recipe (Base): __tablename__ = 'recipe' id = Column(Integer, primary_key=True) title = Column(Text) instructions = Column(Text) 现在让我们假设我执行了一个查询,它生成了Recipe类的一个实例r。如何获取r的n第列值?(例如,将r.instructions表示为类似r
class Recipe (Base):
__tablename__ = 'recipe'
id = Column(Integer, primary_key=True)
title = Column(Text)
instructions = Column(Text)
现在让我们假设我执行了一个查询,它生成了Recipe
类的一个实例r
。如何获取r
的n
第列值?(例如,将r.instructions
表示为类似r[2]
——这不起作用。)找到了一些东西:
getattr(r, list(Recipe.__table__._columns)[n].name)
Recipe.\uuuu table\uu columns
返回看起来像列表但实际上是ImmutableColumnCollection
的内容。因此,我们使用list
将其转换为一个,并获取该列表的n
th元素的名称——列名(对于n==2
,这将是指令
)。最后,我们从我们的Recipe
对象r
中找到了该名称的属性getattr
,是什么决定了列的顺序?我想我是按照指定类成员的顺序来做的。不是这样吗?按照问题的措辞,我们只能假设情况就是这样。所以,既然这就是你要找的,请看。我希望我的例子能说明这一点,但我发现这绝不是毫无疑问的。无论如何,谢谢你的链接;尽管指定了解决方法,但它比我希望的要复杂一些。有没有什么特定于SQLAlchemy的东西可以让它变得更简单?