關於pymysql讀取不到後台資料庫更新的資料

2021-09-13 09:47:33 字數 1120 閱讀 5947

今天做乙個監控後台資料庫資料的程式中,使用了pymysql,但是在每次使用游標物件select物件時資料都是乙個樣。

原因在於:1. mysql的儲存引擎inoodb的事務隔離級別預設是 可重複讀(repeatable read),例如a客戶端事務未提交,而b客戶端事務修改了資料,a客戶端只能讀取到小於等於當前事務版本號的資料(快照讀),所以只有提交完事務後,開啟新的事務中才能讀取到新的資料。

2. pymysql模組的連線物件預設是沒有自動提交事務的,需要我們用乙個commite()方法才能提交,不像我們在mysql客戶端中,每次select,update,delete都幫我們自動提交事務,所以只要我們手動提交了事務,再重新select就可以查到新的資料。

解決方法:

方法一: 每次在用游標物件執行完查詢語句後都手動提交

from pymysql import *

con = connect(host = 『***x』, port = ***x, database = 『***x』, user = 'root', password = '123123', charset = 'utf8')

cs = con.cursor()

sql = 『select * from *** where id = 1』

# 開啟事務

cs.execute(sql)

# 手動關閉事務

con.commit()

print(cs.fetchone())   #資料a

# 再開啟事務

cs.execute(sql)

# 再關閉事務

con.commit()

print(cs.fetchone())   #更新後的資料

方法二.建立乙個自動幫我們提交事務的連線物件

con = connect(host = 'localhost', port = 3306, database = 'smarthome', user = 'root', password = '123123', charset = 'utf8』,autocommit = 1)    

這樣就不用每次查資料都手動結束事務

但是修改資料要小心,因為自動提交,沒有commit也會生效。

關於Jboot讀取不到配置檔案

在專案中修改埠,但是啟動後還是預設8080!配置檔案中如下 type default undertow support undertow jboot.server.type undertow jboot.server.host jboot.server.port 9111 jboot.server....

關於如何html如何讀取後台快取資料

小白做筆記 var sp new sharedpreference var user sp.getjson skyi.key.user,null user是後台封裝好的,相當於類之類的,裡面含有你所需要的資料,讀取出來 使用後台快取資料 username val user.loginname use...

解決pymysql查不到最新資料的辦法

最近用 flask 寫了幾個介面部署在伺服器上,然後用 pytest 來做測試,但遇到了問題,搞了大半天才把問題解決。問題大概是這樣的,我在本地環境用 pytest 寫 來對伺服器上 flask 的介面進行測試,在測試刪除介面的時候,第一步我在 pytest 中會通過sql插入資料到mysql資料庫...