間の違い
a = session.query(Accounts).filter(Accounts.key = 4).first()
と
a = session.query(Accounts).filter(Accounts.key = 4)[0]
?
間の違い
a = session.query(Accounts).filter(Accounts.key = 4).first()
と
a = session.query(Accounts).filter(Accounts.key = 4)[0]
?
@mataがソースコードを示して指し示しているように、2つの実行パスに違いはありません。実際、エンジンを作成するときに設定することでSQLロギングを有効にすることもできecho=True
、両方のSQLステートメントがまったく同じであることがわかります(ある種のSELECT ... FROM ... WHERE ....id = ? LIMIT ? OFFSET ?
)
ただし、Accounts.key
が実際に主キーである場合、主キーによって永続インスタンスを取得する最良の方法は、Query.get
メソッドを使用することです。このメソッドは生成されSELECT ... FROM ... WHERE ....id = ?
、十分に機能するはずです。私はそれが速くなることはないだろうと思いますが、はるかにきれいです。