如何用Python记录Sqlite3中的查询?
我在我的Python应用中使用Sqlite3数据库,并通过参数替换来查询数据。
比如说:
cursor.execute('SELECT * FROM table WHERE id > ?', (10,))
有些查询没有正确返回结果,我想记录这些查询,然后手动尝试查询sqlite。
我该如何记录这些带参数的查询,而不是用问号代替?
2 个回答
0
假设你有一个日志记录的功能,你可以先调用它:
query, param = 'SELECT * FROM table WHERE id > ?', (10,)
log(query.replace('?', '%s') % param)
cursor.execute(query, param)
这样你就不需要修改你的查询了。
而且,这并不是说只适用于Sqlite。
40
Python 3.3 版本引入了一个叫做 sqlite3.Connection.set_trace_callback 的功能:
import sqlite3
connection = sqlite3.connect(':memory:')
connection.set_trace_callback(print)
你传入的这个函数会在每次通过这个特定的连接对象执行 SQL 语句时被调用。与其使用 print
,你可能更想用 logging
模块里的一个函数。