OpenTelemetry SQLite3 Instrumentation

SQLite instrumentation supporting sqlite3, it can be enabled by using SQLite3Instrumentor. At this time, cursor objects must be explicitly initialized as shown below to support tracing.

Usage

import sqlite3
from opentelemetry.instrumentation.sqlite3 import SQLite3Instrumentor

# Call instrument() to wrap all database connections
SQLite3Instrumentor().instrument()

cnx = sqlite3.connect(':memory:')
cursor = cnx.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS test (testField INTEGER)")
cursor.execute("INSERT INTO test (testField) VALUES (123)")
cursor.close()
cnx.close()
import sqlite3
from opentelemetry.instrumentation.sqlite3 import SQLite3Instrumentor

# Alternatively, use instrument_connection for an individual connection
conn = sqlite3.connect(":memory:")
instrumented_connection = SQLite3Instrumentor().instrument_connection(conn)
cursor = instrumented_connection.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS test (testField INTEGER)")
cursor.execute("INSERT INTO test (testField) VALUES (123)")
cursor.execute("SELECT * FROM test")
cursor.close()
instrumented_connection.close()

API

class opentelemetry.instrumentation.sqlite3.SQLite3Instrumentor(*args, **kwargs)[source]

Bases: BaseInstrumentor

instrumentation_dependencies()[source]

Return a list of python packages with versions that the will be instrumented.

The format should be the same as used in requirements.txt or pyproject.toml.

For example, if an instrumentation instruments requests 1.x, this method should look like: :rtype: Collection[str]

def instrumentation_dependencies(self) -> Collection[str]:

return [‘requests ~= 1.0’]

This will ensure that the instrumentation will only be used when the specified library is present in the environment.

static instrument_connection(connection, tracer_provider=None)[source]

Enable instrumentation in a SQLite connection.

Parameters:
  • connection (TypeVar(SQLite3Connection, bound= Optional[Connection])) – The connection to instrument.

  • tracer_provider (Optional[TracerProvider]) – The optional tracer provider to use. If omitted the current globally configured one is used.

Return type:

TypeVar(SQLite3Connection, bound= Optional[Connection])

Returns:

An instrumented SQLite connection that supports telemetry for tracing database operations.

static uninstrument_connection(connection)[source]

Disable instrumentation in a SQLite connection.

Parameters:

connection (TypeVar(SQLite3Connection, bound= Optional[Connection])) – The connection to uninstrument.

Return type:

TypeVar(SQLite3Connection, bound= Optional[Connection])

Returns:

An uninstrumented connection.