如何使用Python在Sqlite3中记录查询?

时间:2011-08-04 13:10:15

标签: python logging sqlite

我在我的Python应用程序中使用Sqlite3数据库并使用参数替换查询它 例如:

cursor.execute('SELECT * FROM table WHERE id > ?', (10,))

有些查询没有正确返回结果,我想记录它们并尝试手动查询sqlite 如何使用参数而不是问号来记录这些查询?

2 个答案:

答案 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特有的。