OpenTelemetry Database API Integration

The trace integration with Database API supports libraries following the Python Database API Specification v2.0.

Usage

import mysql.connector
import pyodbc
from opentelemetry.trace import tracer_provider
from opentelemetry.ext.dbapi import trace_integration

trace.set_tracer_provider(TracerProvider())
tracer = trace.get_tracer(__name__)
# Ex: mysql.connector
trace_integration(tracer_provider(), mysql.connector, "connect", "mysql", "sql")
# Ex: pyodbc
trace_integration(tracer_provider(), pyodbc, "Connection", "odbc", "sql")

API

opentelemetry.ext.dbapi.trace_integration(tracer, connect_module, connect_method_name, database_component, database_type='', connection_attributes=None)[source]

Integrate with DB API library. https://www.python.org/dev/peps/pep-0249/

Parameters
  • tracer (Tracer) – The Tracer to use.

  • connect_module (Callable[…, any]) – Module name where connect method is available.

  • connect_method_name (str) – The connect method name.

  • database_component (str) – Database driver name or database name “JDBI”, “jdbc”, “odbc”, “postgreSQL”.

  • database_type (str) – The Database type. For any SQL database, “sql”.

  • connection_attributes (Optional[Dict]) – Attribute names for database, port, host and user in Connection object.

class opentelemetry.ext.dbapi.DatabaseApiIntegration(tracer, database_component, database_type='sql', connection_attributes=None)[source]

Bases: object

wrapped_connection(connect_method, args, kwargs)[source]

Add object proxy to connection object.

get_connection_attributes(connection)[source]
class opentelemetry.ext.dbapi.TracedConnectionProxy(connection, db_api_integration, *args, **kwargs)[source]

Bases: ObjectProxy

cursor(*args, **kwargs)[source]
class opentelemetry.ext.dbapi.TracedCursor(db_api_integration)[source]

Bases: object

traced_execution(query_method, *args, **kwargs)[source]
class opentelemetry.ext.dbapi.TracedCursorProxy(cursor, db_api_integration, *args, **kwargs)[source]

Bases: ObjectProxy

execute(*args, **kwargs)[source]
executemany(*args, **kwargs)[source]
callproc(*args, **kwargs)[source]