首页 > 解决方案 > 为什么 PyMySQL 删除查询执行但没有错误地删除记录?

问题描述

问题:

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

故障排除:

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

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

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()

标签: pythonmysqlphpmyadminmysql-workbench

解决方案


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

conn.commit()


推荐阅读