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

完。

相关推荐
hey_sml2 分钟前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
云技纵横8 分钟前
线上接口突然超时,怎么判断卡在 Nginx、线程池、连接池还是 SQL?
后端·sql·mysql
李白的天不白17 分钟前
python下载脚本
python
2501_9095091020 分钟前
DAY 45
python
郝学胜_神的一滴36 分钟前
Python 高级编程 027:四大推导式全攻略
python·pycharm
菜冻鱼1 小时前
Python-sklearn-特征工程
开发语言·人工智能·python·机器学习·numpy·matplotlib·sklearn
mit6.8241 小时前
archived
后端·python·flask
船长@1 小时前
FastAPI 快速上手:从零基础到实操入门
python·ai·fastapi
技术长镜头1 小时前
别再死记 Record、Gap、Next-Key:沿一条 SQL 看懂 InnoDB 锁
后端·mysql
我要两颗404西柚2 小时前
2【python】:常用关键字,函数,方法
python