You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看psycopg2执行参数化查询时最终发送到数据库的SQL语句

方法1:使用mogrify()方法(最便捷,无需实际执行查询)

psycopg2内置的cursor.mogrify()方法会按照和实际执行完全一致的规则拼接参数和SQL模板,返回最终会发送到数据库的查询语句字节串,是调试单条查询的首选方案。
示例代码:

SQL = "INSERT INTO authors (name) VALUES (%s);"
data = ("O'Reilly", )
# 直接获取拼接后的语句
final_sql = cur.mogrify(SQL, data)
print(final_sql.decode("utf-8"))
# 输出结果:INSERT INTO authors (name) VALUES ('O''Reilly');

方法2:执行后访问cursor.query属性

psycopg2 2.7及以上版本支持在调用execute()执行查询后,通过cursor的query属性获取最后一次执行的完整语句:

cur.execute(SQL, data)
print(cur.query.decode("utf-8"))

方法3:开启PostgreSQL日志记录(适合全局排查所有查询)

如果需要查看应用运行过程中所有发送到数据库的查询,可以修改PostgreSQL配置文件postgresql.conf的如下参数:

  • 将log_statement设置为'all'
  • 配置log_directory和log_filename指定日志存储路径
    修改后重启PostgreSQL服务,所有执行的SQL都会被写入日志文件,适合全链路调试场景。注意生产环境不要长期开启该配置,避免占用过多存储资源。

内容的提问来源于stack exchange,提问作者Lorem Ipsum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:42:00