我有一个像:
这样的sqlDBSession().query(Model).filter(***)
我想用SQLAlchemy
来解释这个sql。
答案 0 :(得分:6)
您的过滤器调用可以转换为字符串:
query = str(DBSession().query(Model).filter(***))
然后您可以使用它来请求MySQL解释:
DBSession().execute('EXPLAIN ' + query)
您可能必须将过滤器添加到查询中的任何绑定参数包含在字典中:
DBSession().execute('EXPLAIN ' + query, {'param_1': 'value1', 'param_2': 'value2'})
答案 1 :(得分:2)
您可以像这样准备您的解释sql字符串:
'EXPLAIN' + query.compile(
compile_kwargs={"literal_binds": True},
dialect=mysql.dialect()
)
优点是查询中已填充参数。