SQLALCHEMY - 迭代数据

问题描述 投票:3回答:3

当我使用SQLALchemy时,如何迭代列名?

例如。

Column Name 1, Column Name 2, Column Name 3, etc...

第二个问题是我有以下查询:

root = dbsession.query(MyTable).filter(MyTable.name==u'john').all()

但是,当我这样做时:

for row in root:
    print row

我没有得到任何结果。相反,我必须这样做:

print row.name, row.age, etc...

我不能只是做print row从所有列返回数据?

python sqlalchemy iteration
3个回答
5
投票

dbsession.query(MyTable).filter(MyTable.name==u'john')将通过ORM并返回您的对象。如果您只想返回所有列,可以使用以下方法绕过ORM:

query = dbsession.query(MyTable).filter(MyTable.name==u'john')
rows = query.statement.execute().fetchall()
for row in rows:
    print row

2
投票

有一种更简单的方法来迭代列名而不使用'query',访问表和列的详细信息可以在docs here中找到。

基本上它看起来像这样:

metadata = MetaData()
metadata.reflect(engine)
tbl = Table('mytable', metadata)
for column in tbl.c:
    print column.name

我认识到这篇文章已经过时了,但是这些信息可能仍然对有人看来很有帮助。


0
投票

如果MyTable是ORM映射类,您可以定义__str____repr__方法,然后它将以您希望的方式打印。否则你只想做for row in session.execute():而不是。

© www.soinside.com 2019 - 2024. All rights reserved.