2011-08-04 24 views
7

我在我的Python應用程序中使用Sqlite3數據庫,並使用參數替換查詢它。
例如:如何使用Python在Sqlite3中記錄查詢?

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

某些查詢不正確的返回結果和我想記錄他們,並嘗試手動查詢sqlite的。
如何使用參數而不是問號記錄這些查詢?

+0

看起來像[this](http://stackoverflow.com/questions/1607368/sql-query-logging-for-sqlite)問題,雖然該示例沒有指定Python。看看它是否有幫助。 – thegrinner

回答

-1

假設你有一個日誌功能,你可以先叫它:

query, param = 'SELECT * FROM table WHERE id > ?', (10,) 
log(query.replace('?', '%s') % param) 
cursor.execute(query, param) 

所以你完全不修改您的查詢

此外,這不是Sqlite特有的。

+4

這會產生錯誤的結果。 Sqlite會在你的數據包含字符串時逃脫 – balrok

8

的Python 3.3擁有sqlite3.Connection.set_trace_callback

import sqlite3 
connection = sqlite3.connect(':memory:') 
connection.set_trace_callback(print) 

您提供的參數的函數被調用爲所執行的每個SQL語句。您可能需要使用logging模塊中的功能,而不是print