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

时间:2014-03-20 02:01:57

标签: python sqlalchemy

假设我已经通过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]的内容 - 这不起作用。)

1 个答案:

答案 0 :(得分:1)

找到了一些东西:

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

Recipe.__table__columns返回看起来像列表但实际上是ImmutableColumnCollection的内容。因此,我们使用list将其转换为一个,并将该列表的第n个元素名称 - 列名称(对于n == 2也是如此)是instructions)。最后,我们从getattr对象Recipe r {{1}}了该名称的属性。