首页 > 解决方案 > 在pymysql中获取执行的sql语句

问题描述

我正在执行一个无效的查询,但我希望能够准确地看到正在执行的查询是什么pymysql来调试它。有没有办法做类似的事情:

try:
    self.cursor.execute(SQL, tuple(PARAMS))
except:
    print (self.cursor.last_executed_statement) # ??

标签: pythonmysqlsql

解决方案


根据文档,您应该能够:

print (self.cursor.statement)

此只读属性以字符串形式返回最后执行的语句。该 statement属性可用于调试和显示发送到 MySQL 服务器的内容。

如果执行了多语句字符串,则该字符串可以包含多个语句。这发生在 multi=True 的 execute() 上。在这种情况下,该statement属性包含整个语句字符串,并且execute()调用返回一个迭代器,该迭代器可用于处理各个语句的结果。此迭代器的statement属性显示各个语句的语句字符串。


推荐阅读