2011-08-04 19 views
7

Estoy usando la base de datos Sqlite3 en mi aplicación Python y la consulto usando la sustitución de parámetros.
Por ejemplo:¿Cómo puedo registrar consultas en Sqlite3 con Python?

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

Algunas consultas no devuelven resultados correctamente y me gustaría iniciar sesión y tratar de consultar sqlite manualmente.
¿Cómo puedo registrar estas consultas con parámetros en lugar de signos de interrogación?

+0

Parece similar a [este] (http://stackoverflow.com/questions/1607368/sql-query-logging-for-sqlite) pregunta, aunque ese ejemplo no especifica Python. Ve si ayuda. – thegrinner

Respuesta

-1

Asumiendo que usted tiene una función de registro, que se podría llamar primero:

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

Así que no modificamos su consulta en absoluto.

Además, esto no es específico de Sqlite.

+4

Esto producirá resultados incorrectos. Sqlite escapará de tus datos cuando contenga cadenas – balrok

8

Python 3.3 tiene sqlite3.Connection.set_trace_callback:

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

La función se proporciona como argumento es llamado para cada sentencia SQL que se ejecuta. En lugar de print, es posible que desee utilizar una función del módulo logging.

Cuestiones relacionadas