0

間の違い

a = session.query(Accounts).filter(Accounts.key = 4).first()

a = session.query(Accounts).filter(Accounts.key = 4)[0]

4

2 に答える 2

1

@mataがソースコードを示して指し示しているように、2つの実行パスに違いはありません。実際、エンジンを作成するときに設定することでSQLロギングを有効にすることもできecho=True、両方のSQLステートメントがまったく同じであることがわかります(ある種のSELECT ... FROM ... WHERE ....id = ? LIMIT ? OFFSET ?

ただし、Accounts.keyが実際に主キーである場合、主キーによって永続インスタンスを取得する最良の方法は、Query.getメソッドを使用することです。このメソッドは生成されSELECT ... FROM ... WHERE ....id = ?、十分に機能するはずです。私はそれが速くなることはないだろうと思いますが、はるかにきれいです。

于 2012-05-07T07:13:23.533 に答える