Tracer mechanism for showing underlying SQL queries

* Pass a tracer= function to Database constructor
* New db.tracer() contextmanager
* Neater SQL indentation, because tracer means it could be visible now
* New db.execute() and db.executescript() methods

Closes #150
This commit is contained in:
Simon Willison 2020-09-07 14:56:59 -07:00 committed by GitHub
commit cf2cb244fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 231 additions and 79 deletions

View file

@ -160,7 +160,7 @@ def test_disable_fts(fresh_db, create_triggers):
expected_triggers = set()
assert expected_triggers == set(
r[0]
for r in fresh_db.conn.execute(
for r in fresh_db.execute(
"select name from sqlite_master where type = 'trigger'"
).fetchall()
)
@ -168,7 +168,7 @@ def test_disable_fts(fresh_db, create_triggers):
table.disable_fts()
assert (
0
== fresh_db.conn.execute(
== fresh_db.execute(
"select count(*) from sqlite_master where type = 'trigger'"
).fetchone()[0]
)