2016-12-21 4 views
0

SQLAlchemy 1.1でクエリ結果を出力するにはどうすればよいですか?私は次のクエリを実行している

のような出力を生成し
s.query(db.Order, db.Execution).join(db.Execution).all() 

[(<db.Order at 0x7fd061efeda0>, <db.Execution at 0x7fd061789780>), 
(<db.Order at 0x7fd061efeda0>, <db.Execution at 0x7fd061789b38>), 
(<db.Order at 0x7fd061efee48>, <db.Execution at 0x7fd061789550>), 
(<db.Order at 0x7fd061efeb00>, <db.Execution at 0x7fd061789630>), 
(<db.Order at 0x7fd061efeb00>, <db.Execution at 0x7fd061741400>), 
(<db.Order at 0x7fd0603bdcf8>, <db.Execution at 0x7fd060de3c88>), 
(<db.Order at 0x7fd0603bdcf8>, <db.Execution at 0x7fd060de3c18>), 
(<db.Order at 0x7fd0603bdcf8>, <db.Execution at 0x7fd060de3860>), 
(<db.Order at 0x7fd061efe4e0>, <db.Execution at 0x7fd0617412e8>), 
(<db.Order at 0x7fd0603bdcf8>, <db.Execution at 0x7fd060de3710>), 
(<db.Order at 0x7fd0603bdcf8>, <db.Execution at 0x7fd060de35c0>), 
(<db.Order at 0x7fd061f13438>, <db.Execution at 0x7fd061741ba8>)] 

それは右に見えますが、実際に結果を確認する簡単な方法はありますか?

答えて

0

:したがって、あなたは、オブジェクトの属性にアクセスすることができます。

しかし、ユーザーフレンドリーな表示をしたい場合は、__repr__を実装する必要があります。

いくつかの列を見たい場合は、オブジェクト全体ではなく列を指定し、それらの列(値)のみを取得します。たとえば:

q = s.query(db.Order, db.Execution).join(db.Execution) 
q = s.execute(s.subquery()) 
:あなたが本当にあなたのクエリのすべての列を希望の場合は

s.query(
    db.Order.id, 
    db.Order.name, 
    db.Execution.date, 
    db.Execution.type.label("execution_type"), 
).join(db.Execution).all() 

は、その後、あなたにも、以下の操作を行うことができ

1

repherをSQLAlchemyマップオブジェクト(Order and Execution)に実装しようとします。 あなたのOrderオブジェクトが「id」属性を持っている、これはあなたがしたいかもしれないものであると仮定すると:

#...inside class Order 
def __repr__(self): 
    return "<Order(id=" + str(self.id) + ")>") 

HTH

C

1

を、あなたがのために使用することができ、結果を確認する必要がある場合クエリは、すべての要素がOrderとExecutionオブジェクトを持つことがわかるようにリストを返します。あなたがオブジェクトのインスタンスを受け取りたいなら、あなたはすでに実際結果を参照してください、

result = s.query(db.Order,db.Execution).join(db.Execution).all() 
for r in result: 
    print(r.Order.id, r.Execution.id) 
関連する問題