【发布时间】:2011-06-04 18:36:32
【问题描述】:
我有一个 SQLAlchemy 查询对象,想要获取已编译的 SQL 语句的文本,并绑定了所有参数(例如,没有 %s 或其他等待语句编译器或 MySQLdb 方言引擎绑定的变量等) .
在查询中调用 str() 会显示如下内容:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
我尝试查看 query._params 但它是一个空字典。我使用this example of the sqlalchemy.ext.compiler.compiles decorator 编写了自己的编译器,但即使那里的语句仍然有%s 我想要数据的地方。
我不太清楚我的参数何时混入创建查询;检查查询对象时,它们始终是一个空字典(尽管查询执行得很好,并且当您打开回显日志时引擎会将其打印出来)。
我开始收到 SQLAlchemy 不希望我知道底层查询的消息,因为它破坏了所有不同 DB-API 的表达式 API 接口的一般性质。我不介意查询是否在我发现它是什么之前被执行;我只是想知道!
【问题讨论】:
标签: python sql mysql sqlalchemy