Python 使用SQLAlchemy ORM,如何获得第n列?

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

假设我通过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[2]
——这不起作用。)

找到了一些东西:

getattr(r, list(Recipe.__table__._columns)[n].name)

Recipe.\uuuu table\uu columns
返回看起来像列表但实际上是
ImmutableColumnCollection
的内容。因此,我们使用
list
将其转换为一个,并获取该列表的
n
th元素的名称——列名(对于
n==2
,这将是
指令
)。最后,我们从我们的
Recipe
对象
r

中找到了该名称的属性
getattr
,是什么决定了列的顺序?我想我是按照指定类成员的顺序来做的。不是这样吗?按照问题的措辞,我们只能假设情况就是这样。所以,既然这就是你要找的,请看。我希望我的例子能说明这一点,但我发现这绝不是毫无疑问的。无论如何,谢谢你的链接;尽管指定了解决方法,但它比我希望的要复杂一些。有没有什么特定于SQLAlchemy的东西可以让它变得更简单?