0
我一直在使用SQLAlchemy連接到MySQL數據庫。到目前爲止它一直運行良好,但我遇到了一些麻煩。我想在我的一個類中調用一個方法,在查詢後會分配一些新的變量。麻煩的是,每個查詢只有一個用戶最終會擁有通過我的'on_query'方法設置的變量。迭代SQLAlchemy查詢正在重設新分配的變量
...stuff setting up a connection to the database as well as a SQL session.
All were done using default values.
class UserTest(Base):
__tablename__ = "testtable"
ID = Column(Integer(unsigned=True),
primary_key=True, nullable=False, autoincrement=True)
def __init__(self):
pass
def on_query(self):
self.foo = "bar"
query = session.query(UserTest)
for u in query:
u.on_query()
print [hasattr(u, "foo") for u in query]
#prints [False, False, False, False, False, False, False, False, False, True]
session.close()
我發現,如果我是通過迭代查詢來創建一個列表,在「on_query」的方法將作爲我想要它工作。
users = [u for u in query]
for u in users:
u.on_query()
print [hasattr(u, "foo") for u in users]
#prints [True, True, True, True, True, True, True, True, True, True]
這是什麼原因?有沒有辦法阻止它每次迭代去除'foo'變量?如果可能,我寧願將用戶保留在查詢對象中。