问题:
我正在尝试使用运行删除查询 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脚本,但是delete查询仍然不起作用。与客户的结果相同。
问题:
从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()
2条答案
按热度按时间4xy9mtcn1#
在执行查询之后,我认为您必须调用commit来将更改应用到db。
希望这有帮助!
ubby3x7f2#
您必须在关闭连接之前提交更改:
conn.commit()