SQLite3¶
The logfire.instrument_sqlite3() method can be used to instrument the sqlite3 standard library module. This will automatically create spans for each SQL query executed.
Installation¶
Install logfire with the sqlite3 extra:
pip install 'logfire[sqlite3]' uv add 'logfire[sqlite3]' Usage¶
We can use the sqlite in-memory database to demonstrate the usage of the logfire.instrument_sqlite3() method.
You can either instrument the sqlite3 module or instrument a specific connection.
Instrument the module¶
Here's an example of instrumenting the sqlite3 module:
import sqlite3 import logfire logfire.configure() logfire.instrument_sqlite3() with sqlite3.connect(':memory:') as connection: cursor = connection.cursor() cursor.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)') cursor.execute("INSERT INTO users (name) VALUES ('Alice')") cursor.execute('SELECT * FROM users') print(cursor.fetchall()) # > [(1, 'Alice')] Instrument a connection¶
As mentioned, you can also instrument a specific connection. Here's an example:
import sqlite3 import logfire logfire.configure() with sqlite3.connect(':memory:') as connection: connection = logfire.instrument_sqlite3(connection) cursor = connection.cursor() cursor.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)') cursor.execute("INSERT INTO users (name) VALUES ('Alice')") cursor.execute('SELECT * FROM users') print(cursor.fetchall()) # > [(1, 'Alice')] Avoid using execute from sqlite3.Connection
The execute method from Connection is not instrumented!
You should use the execute method from the Cursor object instead.
See opentelemetry-python-contrib#3082 for more information.
logfire.instrument_sqlite3() uses the OpenTelemetry SQLite3 Instrumentation package, which you can find more information about here.