Documentation forSolarWinds Observability SaaS

Python trace context in queries

Adding trace context to application queries provides the ability to correlate the queries from a traced transaction, and if sampled, the queries to the transaction trace detail. This feature is also a requirement for the integration of APM with DBO.

Enabling

Trace context propagation to queries is disabled by default. It can be enabled in the Python Library using these configuration options:

  • SW_APM_ENABLED_SQLCOMMENT: This option must be set. SolarWinds recommends the following values to support the integration of APM with DBO:

    • MySQL: Enable this feature at the SQLAlchemy level:

      export SW_APM_ENABLED_SQLCOMMENT="sqlalchemy=true"
    • Postgres: Enable this feature at the database driver level:

      # if using psycopg
      export SW_APM_ENABLED_SQLCOMMENT="psycopg=true"
      # if using psycopg2
      export SW_APM_ENABLED_SQLCOMMENT="psycopg2=true"
  • SW_APM_OPTIONS_SQLCOMMENT: This option may be used to customize the fields in the comment. Note that the traceparent field must be enabled (the default) to support the integration of APM with DBO.

The inserted SQL comment is in the format /*db_driver=<driver_name>,traceparent='00-<Trace_ID>-<Span_ID>-<Trace_Flags>'*/. Other key value pairs may be included, depending on the client-side ORM framework, database driver, and upstream service code and frameworks involved in making the query.

For example, a query made by an instrumented Flask service upon receiving an HTTP request may also include controller=<controller_name> and db_framework=<db_framework_name> in addition to the standard SQL comment that is added.

Support Matrix

Database type

Client library/framework

Versions supported

Notes
MySQL SQLAlchemy  
Flask Enabling this feature adds framework information but requires a driver-level or ORM instrumentation to insert the context.
Django ORM Should not be enabled for integration of APM with DBO. The inserted context does not allow proper correlation.
PostgreSQL psycop
psycopg2
SolarWinds does not recommend enabling this feature if your application uses server-side prepared statements, because the inserted context will likely be incorrect for executions of the statement.
SQLAlchemy Should only be enabled for integration of APM with DBO if trace context in queries is not enabled for psycopg/psycopg2. Otherwise, multiple comments are inserted.
Flask Enabling this feature adds framework information but requires a driver-level or ORM instrumentation to insert the context.
Django ORM Should not be enabled for integration of APM with DBO. The inserted context does not allow proper correlation.