2011-06-22 12 views
3

SQLALchemyを使用しているとき、どのようにして列名を反復するのでしょうか?SQLALCHEMY - データの反復

例:私が行うとき、しかし

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

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

2つ目の質問は、私は次のクエリを持っている

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 

基本的に、それは次のようになります。