/ / Comment enregistrer des requêtes dans Sqlite3 avec Python? - python, sqlite, journalisation, sqlite3

Comment puis-je enregistrer des requêtes dans Sqlite3 avec Python? - python, sqlite, journalisation, sqlite3

J'utilise la base de données Sqlite3 dans mon application Python et l'interroge à l'aide de la substitution de paramètres.
Par exemple:

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

Certaines requêtes ne renvoient pas les résultats correctement et j'aimerais les consigner et essayer d'interroger manuellement sqlite.
Comment enregistrer ces requêtes avec des paramètres plutôt que des points d'interrogation?

Réponses:

10 pour la réponse № 1

Python 3.3 a sqlite3.Connection.set_trace_callback:

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

La fonction que vous fournissez en tant qu'argument est appelée pour chaque instruction SQL exécutée. Au lieu de print, vous voudrez peut-être utiliser une fonction du logging module.


-1 pour la réponse № 2

En supposant que vous ayez une fonction de journal, vous pouvez l’appeler d’abord:

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

Donc vous ne pas modifier votre requête du tout.

De plus, ceci n'est pas spécifique à Sqlite.