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