python mysql插入資料成功且已提交,但無法查詢,是

時間 2021-10-14 22:24:14

1樓:匿名使用者

具體原因還需要你自己除錯,你的**裡面有如下幾個錯誤:

1.cursor每次執行完畢後需要執行cursor.close用來關閉當前執行緒

2.在迴圈中反覆執行insert根本無效率而言,你在while裡面把所有的資料都存入sql中, 比如insert table(a,b) values(1,2),(3,4),(5,6),跳出迴圈後再執行cursor.exec.

3.迴圈中提交可能會出現這樣的問題,你不斷的使用cursor提交,實際在程式在不斷的建立新的埠和mysql的3306建立連結,如果迴圈很大的話,這簡直就是對資料庫的ddos攻擊。 當達到你伺服器效能的瓶頸的時候,你用show process list會看到你的資料庫中存在大量的處在waiting狀態的sql, tcp/ip的連線數也會處在一個驚人的峰值。

這時候mysql會拒絕服務。

4.在程式裡面把訪問資料庫包裝成一個類或函式是一個好的習慣

2樓:織豐德

執行sql後要

conn=mysql.connect(````)cur=conn.cursor()

cur.execute(sql)

conn.commit() 這句很重要cur.close()

conn.close()

3樓:匿名使用者

是隻有最後那個print不能正常列印還是開始那個也不行?

python連線mysql建立資料庫建立表插入資料在程式裡面也可以查詢出來插入的資料,但是在資料庫裡表為空

4樓:

因為你插入資料沒有commit、在程式裡面也可以查詢出來插入的資料是從快取中查的。

python 向資料庫寫資料,可以寫一部分,但是之後就報2006錯誤

5樓:匿名使用者

關於mysql為什麼gone away我這裡就不描述了。你有時間可以詳細看一下教程,對你會有很大幫助的。

這裡僅僅講如何處理這件事情,從python程式設計師來說,如果沒有mysql server的管理許可權如何去處理。

建議是兩個辦法,第一是找到合適的時間點進行commit; 第二是進行出錯處理。具體到你這個情況,我建議是寫50條後,就主動發起一個commit;的mysql命令。寫在你自己的mysql的語句後面。

很有可能,不用重新連線也可以解決這個問題。 第二就是當發生mysql gone away錯誤時,先嚐試關閉cursor,再嘗試關閉mysql連線,然後進行mysql的重新連線, cursor當然也去重新初始化,重新將剛才失敗的語句進行寫入。

如果正好是50條語句一起寫入,還沒有來得及commit就失敗了,有可能需要將50條全部重新寫入一次。

如果你用的是insert方法, 需要在insert後面加一個ignore,這樣避免重複記錄的產生。

如果遇到新的問題,再靈活處理。

6樓:匿名使用者

用python操作mysql,在python介面中顯示的資料時被修改過的,但是從mysql中進入檢視錶,資料沒有被改變

7樓:匿名使用者

你如果是抄用 mysqldb 操作的資料庫,那麼執行完sql語句後需要commit。例:

conn = mysqldb.connect(user='***', db='***', passwd='***', host='127.0.

0.1', use_unicode=true, charset='utf8')

cur = conn.cursor()

cur.execute('update table set ***=***')

conn.commit()

cur.close()

conn.close()

mysql-python連線mysql資料庫問題,總是拋異常。

8樓:匿名使用者

不要剛bai開始學多線du程程式設計就這樣玩。connection 和 cursor 都不是線zhi程dao

C插入資料庫,不能重複,怎麼防止資料庫中插入重複資料?

protected void submit click object sender,eventargs e 使用try 未出錯時執行的語句 catch exception ex 出錯是執行的語句finally 無論出錯與不出錯始終執行的語句用這個方法找找看是什麼問題,如果不好用最好把這段 抽成方法再...

ACCESS動態插入資料問題

select from a,b where a2 b2 and b1 in select a1 from a 加分吧!表a裡面 a1,a2,a3欄位,假設全部是整型 有初始資料,a1 100,a2 1000,a3 100000 表b裡面 b1,b2,b3欄位。假設全部是整型 無初始資料待插入。建立這...

php mysql資料庫顯示插入成功後資料中插入中文是亂碼UTF8 GBK32都不行

看資料庫的字元如果是gbk那麼就 mysql query set names gbk 如果是utf8那麼就 mysql query set names utf 8 php mysql插入資料庫後亂碼,主要原因是字符集不一致。php檔案儲存一個字符集 php 中一個字符集 連線資料庫物件可以指定一個字...