2011-06-22 51 views
3

當我使用SQLALchemy時,如何迭代列名?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從所有列返回數據嗎?

回答

3

將通過ORM並返回對象。如果你只是想返回所有列,你可以用這個繞過ORM:

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

如果MyTable的是一個ORM映射類,你可以定義__str____repr__方法,然後將打印你想要的方式。否則,您只需要執行for row in session.execute():

1

有一種更簡單的方法可以在不使用「查詢」的情況下遍歷列名,並且可以在文檔here中找到訪問表和列的詳細信息。

本質上,它會是這個樣子:

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

我承認這個職位是過時了,但這種信息可能仍然是有人找很有幫助。