python - 为什么 PyMySQL 删除查询执行但没有错误地删除记录?
问题描述
问题:
我正在尝试pymysql
通过我的函数运行删除查询,delEODTmp
但它没有做任何事情(即删除记录)。它也不会抛出任何错误,因此很难理解它为什么不起作用。
故障排除:
1) 函数 retSQL 就像一个魅力,检索我扔给它的任何 Select 字符串。这确认我的用户登录设置是正确的输入pymysql.connect
。我正在从客户端到Mysql 5.7 server
同一网络上的客户端执行此操作。
2)在使用相同凭据连接到同一服务器的同一客户端上,我可以:
SQL DELETE FROM t_EOD_tmp;
成功运行workbench
SQL DELETE FROM t_EOD_tmp;
成功运行phpMyAdmin
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()
推荐阅读
- db2 - 发生连接授权失败。原因:GSSAPI 服务器凭据无效。错误代码=-4214,SQLSTATE=28000
- javascript - 如何分配或获取工作空间的父文件夹路径和工作空间文件夹的父文件夹名称
- sqlite - 在 Firedac Sqlite 数据库连接上插入后如何进行事件?
- php - 我想通过分页每页显示一篇文章。但是分页按钮不起作用
- c - 如何在 VxWorks 中为特定套接字 fd(非系统范围)设置 TCP 保持活动间隔?
- android - Android Fragment 返回菜单活动
- symfony - 如何在 Symfony 4 中设置相似和不相似?
- java - Android 应用在运行时自行更改语言
- r - 如何在两个数据表之间提取具有特定列和值的行?
- javascript - Javascript中的拆分函数不适用于对象中的字符串