[英]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.