当我使用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
从所有列返回数据?
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
有一种更简单的方法来迭代列名而不使用'query',访问表和列的详细信息可以在docs here中找到。
基本上它看起来像这样:
metadata = MetaData()
metadata.reflect(engine)
tbl = Table('mytable', metadata)
for column in tbl.c:
print column.name
我认识到这篇文章已经过时了,但是这些信息可能仍然对有人看来很有帮助。
如果MyTable是ORM映射类,您可以定义__str__
或__repr__
方法,然后它将以您希望的方式打印。否则你只想做for row in session.execute():
而不是。