SQLALCHEMY-遍历d

2024-03-29 13:09:14 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用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来返回所有列中的数据吗?


Tags: nameforsqlalchemymytableetccolumnrootall
3条回答

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

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

不使用“query”就可以更容易地遍历列名,访问表和列的详细信息可以在文档here中找到。

从本质上讲,它看起来像这样:

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

我知道这篇文章已经过时了,但这些信息可能对找人还是有帮助的。

相关问题 更多 >