假设我已经通过SQLAlchemy的声明系统创建了一个表。
class Recipe (Base):
__tablename__ = 'recipe'
id = Column(Integer, primary_key=True)
title = Column(Text)
instructions = Column(Text)
现在假设我执行一个查询,该查询产生r
类的实例Recipe
。如何获得r
n
列值? (例如,将r.instructions
表达为类似r[2]
的内容 - 这不起作用。)
答案 0 :(得分:1)
找到了一些东西:
getattr(r, list(Recipe.__table__._columns)[n].name)
Recipe.__table__columns
返回看起来像列表但实际上是ImmutableColumnCollection
的内容。因此,我们使用list
将其转换为一个,并将该列表的第n
个元素名称 - 列名称(对于n == 2
也是如此)是instructions
)。最后,我们从getattr
对象Recipe
r
{{1}}了该名称的属性。