Trace write SQL queries in addition to read ones, closes #1568

pull/1589/head
Simon Willison 2021-12-17 18:42:29 -08:00
rodzic 7c8f8aa209
commit f81d9d0cd9
2 zmienionych plików z 16 dodań i 1 usunięć

Wyświetl plik

@ -99,7 +99,9 @@ class Database:
with conn:
return conn.execute(sql, params or [])
return await self.execute_write_fn(_inner, block=block)
with trace("sql", database=self.name, sql=sql.strip(), params=params):
results = await self.execute_write_fn(_inner, block=block)
return results
async def execute_write_fn(self, fn, block=False):
task_id = uuid.uuid5(uuid.NAMESPACE_DNS, "datasette.io")

Wyświetl plik

@ -939,6 +939,19 @@ def test_trace(trace_debug):
assert isinstance(trace["sql"], str)
assert isinstance(trace["params"], (list, dict, None.__class__))
sqls = [trace["sql"] for trace in trace_info["traces"] if "sql" in trace]
# There should be a mix of different types of SQL statement
expected = (
"CREATE TABLE ",
"PRAGMA ",
"INSERT OR REPLACE INTO ",
"DELETE FROM ",
"INSERT INTO",
"select ",
)
for prefix in expected:
assert any(sql.startswith(prefix) for sql in sqls)
@pytest.mark.parametrize(
"path,status_code",