【发布时间】:2018-11-20 06:54:46
【问题描述】:
问题:
我正在尝试通过我的函数 delEODTmp 使用 pymysql 运行删除查询,但它没有做任何事情(即删除记录)。它也不会抛出任何错误,因此很难理解它为什么不工作。
疑难解答:
1) 函数 retSQL 就像一个魅力,检索我扔给它的任何 Select 字符串。这确认我的用户登录设置正确输入到pymysql.connect。我正在从客户端到同一网络上的Mysql 5.7 server 执行此操作。
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 mysql phpmyadmin mysql-workbench