11

我有一个像这样的sql:

DBSession().query(Model).filter(***)

我想用SQLAlchemy.

4

2 回答 2

17

你想把你的 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}')
于 2013-06-23T14:22:57.973 回答
3

您可以像这样准备解释 sql 字符串:

'EXPLAIN' + query.compile(
    compile_kwargs={"literal_binds": True},
    dialect=mysql.dialect()
)

优点是查询已填写参数。

于 2020-09-04T13:02:48.213 回答