2011-08-04 15 views
7

私はPythonアプリケーションでSqlite3データベースを使用しており、パラメータ置換を使用してクエリを実行しています。たとえば
Sqlite3でPythonでクエリをログに記録する方法はありますか?

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文のために呼び出されます。 printの代わりに、loggingモジュールの関数を使用します。

関連する問題