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文件):

完。

相关推荐
再努力"亿"点点6 分钟前
Sklearn(机器学习)实战:鸢尾花数据集处理技巧
开发语言·python
费弗里13 分钟前
无需云服务器!通过Plotly Cloud免费快捷部署Dash应用
python·dash
跟橙姐学代码19 分钟前
轻松搞定 Python 模块与包导入:新手也能秒懂的入门指南
前端·python·ipython
荏苒追寻31 分钟前
Python 爬虫——爬虫基础
python
wdfk_prog34 分钟前
Python脚本深度解析:实现基于YMODEM的单片机固件自动化升级
python·单片机·自动化
Java水解2 小时前
【MySQL】数据库基础
后端·mysql
沃夫上校2 小时前
MySQL 中文拼音排序问题
java·mysql
要一起看日出2 小时前
MVCC-多版本并发控制
数据库·mysql·mvcc
Hx__2 小时前
MySQL InnoDB 的 MVCC 机制
数据库·mysql
萧鼎2 小时前
深入解析 Python 的 pytun 库:虚拟网络接口与隧道技术实战指南
服务器·网络·python