我有一个SQLAlchemy查询对象,想获取已编译的SQL语句的文本,并绑定了所有参数(例如,否%s
或其他变量正等待语句编译器或MySQLdb方言引擎绑定)。
调用str()
查询将显示如下内容:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
我试着在query._params中查找,但这是一个空字典。我使用装饰器的这个示例sqlalchemy.ext.compiler.compiles
编写了自己的编译器,但是即使那里的语句仍然有%s
我想要的数据。
我无法弄清楚何时混入参数来创建查询。当检查查询对象时,它们始终是一个空字典(尽管查询执行得很好,并且当您打开echo记录时引擎会打印出来)。
我开始收到消息,SQLAlchemy不想让我知道底层查询,因为它破坏了表达式API接口的所有不同DB-
API的一般性质。我不在乎查询是否在我发现查询之前就已经执行了;我只是想知道!
该博客提供了更新的答案。
从博客文章中引用,建议并为我工作。
>>> from sqlalchemy.dialects import postgresql
>>> print str(q.statement.compile(dialect=postgresql.dialect()))
其中q定义为:
>>> q = DBSession.query(model.Name).distinct(model.Name.value) \
.order_by(model.Name.value)
或者只是任何一种session.query()。
感谢Nicolas Cadou的回答!希望对其他在这里搜索的人有所帮助。
问题内容: 我正在尝试使用SQLAlchemy的Pylons,但我很喜欢,只有一件事,是否可以打印出在执行之前生成的原始SQL数据? 问题答案: from sqlalchemy.schema import CreateTable 如果使用声明性语法: 更新: 由于我已经接受了答案,并且klenwell答案中有重要信息,因此我也会在此处添加它。 我需要获取原始表sql才能为一些现有模型设置测试。这是
有从字符串中提取SQL查询的正则表达式吗?我不想验证任何SQL语法,而是只想提取一组SQL命令。这是为了以灵活的方式解析给定的SQL文件/字符串。 给出了以下SQL文件/字符串示例: 一些伪代码示例是:。在将来,我希望用所有(可能的)命令来扩展它。 查找具有以下任一项的起始匹配:(UPDATESELECTINSERTINTO) 零个或多个(包括空格和换行符) 停止在处,它分隔SQL查询。 只要通过
喂!我开始学习编程,并从一个奇怪的计算器的方式开始(我知道它的奇怪我是如何做的)。但在这段小代码中,我遇到了Java的一个问题:表达式的非法开始是因为“if(numberTest.equals(+))”,但当我输入“if(numberTest==/)”时,也会出现一个错误。有没有帮助解决这个问题,因为我没有找到任何东西,不知道该搜索什么?(:祝你们今天愉快!保重!)
在用户模型中,我定义了关系: 它返回如何获得包括参数的完整查询? 我还定义了与post模型的关系: 如何使用参数查看完整的关系查询?
问题内容: 我正在开发基于狮身人面像的协作写作工具。用户访问Web应用程序(在python / Flask中开发),以sphinx编写一本书并将其编译为pdf。 我了解到,为了从python中编译sphinx文档,我应该使用 到现在为止还挺好。 现在,我的用户希望该应用向他们显示他们的语法错误。但是输出(在上面的示例中)仅提供了退出代码。 那么,如何从构建过程中获取警告列表? 也许我太有野心了,但
问题内容: 给出以下代码: 我想获取上面的数据库查询生成器将生成的原始SQL查询字符串。在此示例中,它将为。 我该怎么做呢? 问题答案: 要将最近运行的查询输出到屏幕,可以使用以下命令: 我相信最近的查询将在数组的底部。 您将拥有类似的东西: