我有一个 SQLAlchemy 查询对象,希望获得编译后的 SQL 语句的文本,并绑定所有参数(例如,没有 %s
或其他等待语句编译器或 MySQLdb 方言引擎绑定的变量,等等)。
在查询中调用 str()
会显示以下内容:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
我试过查询 params,但是没有结果。我使用 这个例子的 sqlalchemy.ext.compiler.compiles
装饰编写了自己的编译器,但是即使是那里的语句,在我需要数据的地方仍然有 %s
。
我不能很清楚地知道我的参数是什么时候混合在一起来创建查询的; 当检查查询对象时,它们总是一个空字典(尽管查询执行得很好,当您打开 echo 登录时,引擎会打印出来)。
我开始得到这样的信息: SQLAlchemy 不想让我知道底层查询,因为它打破了表达式 API 接口所有不同 DB-API 的一般性质。我不介意查询在我发现它是什么之前被执行; 我只是想知道!