Flask SQLAlchemy怎么查看参数化查询的实际SQL语句

Flask SQLAlchemy操作数据库时,不管是直接用sql语句还是用orm,有的时候为了调试,都需要知道参数化查询的sql语句生成的实际sql语句是什么。

比如:

python 复制代码
params = {'org': '123'}

# 如下是参数化查询sql语句,如果sql语句很长,
# 想知道实际的sql语句,即:
# "select name from table1 where org='123'"
# 怎么办?
sql = "select name from table1 where org=:org"
db.session.execute(sql, params).fetchall()

经过层层调试,发现实际语句在 pymysql/cursors.py 中的 Cursor.mogrify 方法中生成(其他mysql驱动如mysqlclient,情况也类似),在 return query 打个断点,调式时就能看到实际的sql语句了:

Cursor.mogrify 方法所在文件(pymysql包下的cursors.py文件):

完。

相关推荐
Chloeis Syntax几秒前
MySQL初阶学习日记(3)--- 增查改删(CRUD)
数据库·学习·mysql
g***9690几秒前
MySQL版本选择与安装
数据库·mysql
c***72741 分钟前
MySQL查看日志
数据库·mysql
321茄子6 分钟前
MySQL 事务隔离性及锁
java·数据库·mysql
j***89467 分钟前
MySQL数据的增删改查(一)
android·javascript·mysql
w***95498 分钟前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
Blossom.1188 分钟前
基于Mamba-2的实时销量预测系统:如何用选择性状态空间干掉Transformer的O(n²)噩梦
人工智能·python·深度学习·react.js·机器学习·设计模式·transformer
Wise玩转AI10 分钟前
Day 26|智能体的“伦理与安全边界”
人工智能·python·安全·ai·chatgpt·ai智能体
i***486118 分钟前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器
梦里不知身是客1118 分钟前
帆软的图标类型介绍
python·信息可视化·数据分析