2016-10-25 47 views
0

我試圖使用Kenneth Reitz's records library構建一些自動測試腳本。我需要在這裏和那裏檢查MySQL數據庫的更新。更改記錄查詢或關閉事務中的隔離級別

db_url_mysql = 'mysql://user:[email protected]:3306/DB' 
db = records.Database(db_url_mysql) 
rows = db.query("SELECT * FROM Users").all() 

但是,我遇到有時簡單的查詢返回一個空的數據集,忽略表中的更新。我完全可以在GUI客戶端看到更新,甚至可以在備用python控制檯中使用記錄。 我發現記錄使用默認隔離級別爲「REPEATABLE READ」的SQLAlchemy。可重複讀取忽略所有更新,直到事務結束,所以我看不到它們。

有什麼方法可以改變這種情況嗎?我可能需要關閉事務並打開一個新事務,或者更改此連接的隔離級別,但我該如何做?

+0

我仍然無法找到一個方法來改變這個設置不刪除記錄庫,並移動到SQLAlchemy的隔離級別。不過,我找到了一個解決方法。如果你調用'db.query('SET AUTOCOMMIT = 1')',下一次查詢將在調用後立即提交,這有效地允許你在沒有緩存的情況下檢查你的db。 – Ariksu

回答

0

現在我可以回答我的問題。

隨着記錄0.5.0(2016年11月)的發佈,現在有可能將參數傳遞給SQLAlchemy驅動程序。我在0.4.3中沒有這種可能性。

因此,建立連接時,我們應該使用

db_url_mysql = 'mysql://user:[email protected]:3306/DB' 
db = records.Database(db_url_mysql,isolation_level="READ_UNCOMMITTED")