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 import trace
from opentelemetry.ext.dbapi import trace_integration
from opentelemetry.trace import TracerProvider

trace.set_tracer_provider(TracerProvider())

# Ex: mysql.connector
trace_integration(mysql.connector, "connect", "mysql", "sql")
# Ex: pyodbc
trace_integration(pyodbc, "Connection", "odbc", "sql")

API

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

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

Parameters
  • 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.

  • tracer_provider (Optional[TracerProvider]) – The TracerProvider to use. If ommited the current configured one is used.

opentelemetry.ext.dbapi.wrap_connect(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]