簡體   English   中英

我的程序沒有更改MySQL數據庫,但沒有出現錯誤

[英]My program isn't changing MySQL database yet presents no error

我已經編寫了一個程序來抓取網站中的數據,將其放入幾個數組中,遍歷每個數組並將其放入查詢中,然后執行查詢。 代碼如下:

for count in range(391):
    query = #long query
    values = (doctor_names[count].encode("utf-8"), ...) #continues for about a dozen arrays
    cur.execute(query, values)
cur.close()
db.close()

我運行該程序,除了一些截斷警告之外,一切都很好。 我在MySQL Workbench中打開數據庫,但沒有任何改變。 我嘗試將值中的數組更改為常量字符串並運行它,但仍然沒有任何改變。

然后,我創建了一個數組來保存上次執行的查詢: sql_queries.append(cur._last_executed)並將其推送到文本文件中:

fo = open("foo.txt", "wb")

for q in sql_queries:
    fo.write(q)
fo.close()

這給了我一個帶有多個查詢的大文本文件。 當我復制整個文本文件並在MySQL Workbench中創建一個新查詢並執行它時,它將根據需要填充數據庫。 我的程序缺少什么?

如果表使用的是事務存儲引擎(例如Innodb),則需要調用db.commit()來存儲事務:

for count in range(391):
    query = #long query
    values = (doctor_names[count].encode("utf-8"), ...) 
    cur.execute(query, values)
db.commit()
cur.close()
db.close()

請注意,對於事務型數據庫,除了啟用數據庫之外,還可以通過回滾插入或使用db.rollback()更新來處理錯誤。 需要db.commit才能完成事務。 除此以外,

關閉連接而不先提交更改將導致執行隱式回滾。

暫無
暫無

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

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