我有一个像这样的sql:
DBSession().query(Model).filter(***)
我想用SQLAlchemy
.
你想把你的 SQLAlchemy 查询编译成一个字符串;使用正确的方言并为绑定参数使用文字值
query = DBSession().query(Model).filter(***)
# you should have an engine reference used to create the DBSession object
sql = query.statement.compile(engine, compile_kwargs={"literal_binds": True})
然后,您可以使用它来询问 MySQL 解释:
DBSession().execute(f'EXPLAIN {sql}')
您可以像这样准备解释 sql 字符串:
'EXPLAIN' + query.compile(
compile_kwargs={"literal_binds": True},
dialect=mysql.dialect()
)
优点是查询已填写参数。