簡體   English   中英

MySQL和Python:從一個線程提交對另一個線程不可見,但在MySQL Workbench中可見

[英]MySQL and Python: commits from one thread not visible to another thread, but visible from MySQL Workbench

我有兩個Python線程訪問同一個MySQL數據庫,每個線程都有自己的連接和游標對象。 一個線程將一條記錄插入表中。 正如我所期望的那樣,從MySQL Workbench來看,直到寫入線程進行了提交,我才看到表的長度增加,然后才看到更改。 問題是,我的另一個線程看不到更改:它看到了表的舊狀態,好像提交從未發生過。 當我重新啟動應用程序時,表的長度確實可以正確讀取,但是無論寫線程追加和提交多少條記錄,它都永遠卡在那兒。 我覺得我在這里確實缺少一些明顯的東西。

要讀取表的長度,我嘗試過:從mystupidtable中選擇count(*)從mystupidtable中選擇count(id)甚至:從mystupidtable中選擇id

所有這些嘗試都會返回表的舊狀態,好像提交從未發生過。

聽起來好像第二個線程正在從隱式打開事務時開始運行數據庫快照。 (我認為游標的。)如果是這樣,則在第二個線程上提交游標將使它能夠查看新數據。

參見https://dev.mysql.com/doc/refman/5.0/en/innodb-consistent-read.html和REPEATABLE READ級別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM