我怎样才能用SQLAlchemy做“mysql解释”

时间:2013-06-23 14:10:40

标签: python mysql sqlalchemy explain

我有一个像:

这样的sql
DBSession().query(Model).filter(***)

我想用SQLAlchemy来解释这个sql。

2 个答案:

答案 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()
)

优点是查询中已填充参数。