我在我的Python应用程序中使用Sqlite3数据库并使用参数替换查询它 例如:
cursor.execute('SELECT * FROM table WHERE id > ?', (10,))
有些查询没有正确返回结果,我想记录它们并尝试手动查询sqlite 如何使用参数而不是问号来记录这些查询?
答案 0 :(得分:14)
Python 3.3有sqlite3.Connection.set_trace_callback:
import sqlite3
connection = sqlite3.connect(':memory:')
connection.set_trace_callback(print)
为通过该特定Connection对象执行的每个SQL语句调用您作为参数提供的函数。您可能希望使用print
模块中的函数而不是logging
。
答案 1 :(得分:-1)
假设你有一个日志功能,你可以先调用它:
query, param = 'SELECT * FROM table WHERE id > ?', (10,)
log(query.replace('?', '%s') % param)
cursor.execute(query, param)
所以你根本不修改你的查询。
此外,这不是Sqlite特有的。