gpt4 book ai didi

python - 为什么PyMySQL delete query执行但不删除记录而不会出错?

转载 作者:行者123 更新时间:2023-12-01 00:35:57 24 4
gpt4 key购买 nike

问题:

我正在尝试通过我的函数 delEODTmp 使用 pymysql 运行删除查询,但它没有执行任何操作(即删除记录)。它也不会返回任何错误,因此很难理解为什么它不起作用。

故障排除:

1) 函数 retSQL 的工作就像一个魅力,检索我扔给它的任何 Select 字符串。这确认我的用户登录设置是对 pymysql.connect 的正确输入。我正在从客户端到同一网络上的 Mysql 5.7 服务器 执行此操作。

2) 在使用相同凭据连接到同一服务器的同一客户端上,我可以:

  • workbench 成功运行 SQL DELETE FROM t_EOD_tmp;
  • phpMyAdmin 成功运行 SQL DELETE FROM t_EOD_tmp;

3) 我尝试在服务器上本地运行 py 脚本,但删除查询仍然不起作用。与客户的结果相同。

问题:

从 PyMySQL 执行时,破坏性查询似乎被阻止了。我是否需要从 Python 或 MySQL 启用某些功能?

似乎没有关于 PyMySQL 的广泛文档,因此通过不同的 MySQL Python 库进行开发可能会更好。有没有更好的办法?

代码:

import pymysql
import pandas

query1 = '''SELECT * FROM t_EOD limit 1000;'''

def retSQL(query):
conn = pymysql.connect(host=myServer, port=myPort, user=myUsr, password=myPwd, db=myDB)
df = pd.read_sql(query,conn)
print(df.head(5))
conn.close() # closeSQL connection

def delEODTmp():
conn = pymysql.connect(host=myServer, port=myPort, user=myUsr, password=myPwd, db=myDB)
cur = conn.cursor()
q1 = '''DELETE FROM t_EOD_tmp;'''
cur.execute(q1)
cur.close()
conn.close()

retSQL(query1)
delEODTmp()

最佳答案

您必须在关闭连接之前提交更改:

conn.commit()

关于python - 为什么PyMySQL delete query执行但不删除记录而不会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50790682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com