Fix PyMysql Update Fail
某天在調整我的爬蟲時發現到 下的Update Query都沒有成立
檢查欄位的updated_at 也沒有更新到於是開始反查原因
- 先print出PyMysql的Row Sql來看
connection = pymysql.connect( host=db_host, database=db_name, user=db_user_name, password=db_password ) cursor = connection.cursor() update_sql = """ UPDATE product SET name= %s """ data = (prod_name) cursor.execute(update_sql, clothes_data) print(cursor._last_executed)
cursor is the object used to interact with the database
cursor._last_executed 為這個物件最後executed的query
OK 我檢查 Query 是正確的 但還是沒有更新到
- connection.commit
後來就繼續Goole 到了這篇
PyMysql UPDATE query
當Mysql 提交了 Upadte後 會先開啟DB Transaction
然後會因為default operates而有不同的動作
我原本預設是None auto commit mode 所以 如果提交Update沒有 commit出去
這筆Transaction不會結束,異動的資料就還是Lock狀態,那其他人就要等到Transaction Timeout後才能存取這些資料
後來修改成
connection = pymysql.connect( host=db_host, database=db_name, user=db_user_name, password=db_password ) cursor = connection.cursor() update_sql = """ UPDATE product SET name= %s """ data = (prod_name) cursor.execute(update_sql, clothes_data) connection.commit()
完成收工
參考自:
How to print the query being sent to mySQL using ‘pymysql’?
PyMysql UPDATE query