假设我有一个User类。
class User:
def __ init__(self):
pass
def other_method(self):
some_code
我需要查询数据库:
id = 10 # let be (conditionally)
a = session.query(User).first(User.id=id)
b = session.query(User).first(User.id=id)
在这种情况下,返回的对象(a和b)相同-id(a)== id(b)甚至是hash(a)== hash(b)。对于相同的对象,还会发出两次请求。 这种行为总是得到保证吗?
答案 0 :(得分:-1)
您两次调用查询方法,因此它将只执行两个不同的查询。 为避免此问题,您可以创建自己的经理。
class QueryManager:
def __init__(self):
self.alreadyQuery = {}
def queryById(self, id):
if id in self.alreadyQuery:
return self.alreadyQuery[id]
user = session.query(User).first(User.id=id)
self.alreadyQuery[id] = user
return user