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

Ber*_*ter 2 python sqlalchemy

假设我通过 SQLAlchemy 的声明式系统创建了一个表。

class Recipe (Base):
    __tablename__ = 'recipe'

    id = Column(Integer, primary_key=True)
    title = Column(Text)
    instructions = Column(Text)
Run Code Online (Sandbox Code Playgroud)

现在假设我执行一个查询,生成该类r的一个实例Recipe。如何获取r第 3n列的值?(例如,表达r.instructionsr[2]-- 这不起作用。)

Ber*_*ter 5

发现了一些东西:

getattr(r, list(Recipe.__table__._columns)[n].name)
Run Code Online (Sandbox Code Playgroud)

Recipe.__table__columns返回看起来像列表但实际上是一个ImmutableColumnCollection. 因此,我们通常将list其转换为 1,并采用该列表的n第一个元素的名称 - 列名称(因此对于n == 2,这将是instructions)。最后,我们从对象getattr中获取该名称的属性。Reciper