0
我試着用peewee實現一個簡單的模型。因爲我想重用做查詢常常不同的上下文中的功能,我想確保我的數據庫連接打開和使用堆棧這樣關閉只有1次爲任何呼叫:然後peewee db.close()不按預期方式工作
connected = 0
def connect():
global connected
if connected == 0:
db.connect()
connected +=1
def disconnect():
global connected
if connected == 0:
raise ... # should not happen
if connected == 1:
db.close()
connected -= 1
我的功能看起來像這樣:
def get_something():
try:
connect()
# execute query
finally:
disconnect()
但是,第二次函數被調用,peewee抱怨連接已經打開。我完全確定db.close()被正確調用。有趣的是,如果我手動添加
connected += 1
disconnect()
兩次調用之間,它工作正常。
在我看來,這應該完全沒有區別。已經通過在finally的disconnect()中加入睡眠來檢查它是否是一個計時問題;同樣的行爲。有沒有人有一個想法,如果這確實是一個peewee問題或我的代碼有問題?
嗯,這個東西是get_something()的第一個調用按預期工作,但如果我立即再次調用get_something(),它會失敗。所以除了這兩個調用之外,不應該有任何查詢。 –