我正在为查询构建器编写单元测试,其中我从几个用户输入字段中组装查询。
例如
query = sql.SQL("SELECT {fields} FROM {table}).format(
fields='*'
table=sql.Identifier(topic)))
我只是想检查查询是否是我想要的,而无需执行。
我试图打印查询,并得到了一个看起来像
的组合对象Composed([SQL('SELECT '), Composed([Identifier('*')]), SQL(' FROM '), Identifier('topic'), SQL(' '), SQL(''), SQL(' ')...)
是否尝试将作为组成对象的动态sql转换为sql查询字符串?
SELECT * FROM topic
我没有为单元测试设置postgres,所以我不能使用
query.as_string(conn)
有任何提示吗?非常感谢
答案 0 :(得分:1)
您需要cursor.mogrify(query, params)
,但是要调用它需要一个游标,并且要创建一个游标,您需要打开一个连接。我不相信没有连接就可以得到最终查询;这是因为查询取决于服务器和数据库(服务器版本,数据库编码,引用样式)。