我有一个SQLAlchemy查询对象,希望获得编译后的SQL语句的文本,并绑定其所有参数(例如,no %s
或其他等待语句编译器或MySQLdb方言引擎绑定的变量,等等).
在查询中调用str()
会显示如下内容:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
我试着在查询中查找_params,但它是一个空的dict.我用this example of the sqlalchemy.ext.compiler.compiles
decorator编写了自己的编译器,但即使是那里的语句,在我需要数据的地方也有%s
.
我不太清楚我的参数是什么时候混合在一起创建查询的;当判断查询对象时,它们总是一个空字典(尽管查询执行得很好,当您打开echo日志(log)时,引擎会打印出来).
我开始明白SQLAlchemy不想让我知道底层的查询,因为它打破了表达式API接口的一般性质——所有不同的DB API.我不介意在我发现之前执行查询;我只是想知道!