我可以在Python sqlite3模块中获取由预准备语句生成的原始SQL吗?

时间:2010-05-11 11:28:45

标签: python sqlite pysqlite

如果是这样,我该怎么做?

2 个答案:

答案 0 :(得分:2)

执行预准备语句时,不会生成新的SQL。 准备语句的想法是SQL查询及其数据是单独传输的(这就是你不必转义任何参数的原因) - 查询很可能只是在准备之后才以优化的形式存储。

答案 1 :(得分:1)

当您创建预准备语句时,“模板”SQL代码已经发送到DBMS,它将其编译为表达式树。传递值时,相应的库(在您的情况下为python sqlite3模块)不会将值合并到语句中。 DBMS可以。

如果您仍想生成普通的SQL字符串,可以使用字符串替换函数用值替换占位符(在转义它们之后)。

你需要什么?