问题:
我试图通过函数delEODTmp
使用pymysql
运行一个删除查询,但它没有做任何事情(即删除记录)。它也不会抛出任何错误,这使得它很难理解为什么它不起作用。在
故障排除:
1)函数retSQL的工作原理很像一个咒语,可以检索我向它抛出的任何选择字符串。这将确认我的用户登录设置是pymysql.connect
的正确输入。我在同一个网络上从一个客户机到一个Mysql 5.7 server
。在
2)在连接到具有相同凭据的同一服务器的同一客户机上,我可以:
workbench
成功运行SQL DELETE FROM t_EOD_tmp;
phpMyAdmin
成功运行SQL DELETE FROM t_EOD_tmp;
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()
在执行查询后,我认为您必须调用commit来将更改应用于数据库。在
希望这有帮助!在
您必须在关闭连接之前提交更改:
conn.commit()
相关问题 更多 >
编程相关推荐