之间有任何区别
a = session.query(Accounts).filter(Accounts.key = 4).first()
和
a = session.query(Accounts).filter(Accounts.key = 4)[0]
答案 0 :(得分:4)
显然,使用__gettitem__
或first
提示:上述两个调用基本上都返回:
query = session.query(Accounts).filter(Accounts.key = 4)
a = list(query[0:1])[0]
答案 1 :(得分:1)
正如@mata指出并指向源代码,两者的执行路径没有区别。实际上,您还可以在创建引擎时通过设置echo=True
来启用SQL日志记录,并且您将看到两个SQL语句完全相同(某种SELECT ... FROM ... WHERE ....id = ? LIMIT ? OFFSET ?
)
但是,如果Accounts.key
实际上是主键,那么通过主键获取持久化实例的最佳方法是使用Query.get
方法,该方法将生成SELECT ... FROM ... WHERE ....id = ?
和它应该足够好了。我认为它不会更快,但更清洁。