我有一个托管在GCP上的MySQL数据库实例,我正在使用吡虫啉 python包连接到它。我想从一个名为Basic的数据库表中删除一些行。
我编写的代码如下所示。变量conf包含到数据库实例的连接详细信息。
import pymysql
import pandas as pd
# Establish connection.
connection = pymysql.connect(**conf)
cursor = connection.cursor()
# Delete rows of table.
try:
cursor.execute("DELETE FROM Basic WHERE Date = '2022-11-25 04:00:00';")
except Exception as ex:
print("Exception occured: %s" %ex)
finally:
connection.close()
# Check the table to see if deletion has occurred.
connection = pymysql.connect(**conf)
cursor = connection.cursor()
cursor.execute("SELECT * FROM Basic WHERE Date = '2022-11-25 04:00:00'")
connection.close()
df = pd.DataFrame(cursor.fetchall(), columns = ["Date", "State", "Price", "Demand"])显然,人们会期望在这里定义的dataframe没有行,但事实并非如此。这表明上面代码中包含的SELECT语句会产生预期的结果,但是相应的DELETE语句不会产生预期的结果。
为什么是这种情况?
发布于 2022-12-02 02:18:52
上面的代码要求添加以下行,以便提交DELETE语句。
connection.commit()在修改数据的每个事务之后,都应该调用commit方法,比如这个。
https://stackoverflow.com/questions/74649302
复制相似问题