@@ -170,64 +170,61 @@ def response_hook(span, request, response):
170170Note: 
171171    The environment variable names used to capture HTTP headers are still experimental, and thus are subject to change. 
172172
173- SQLCOMMENTER 
174- ***************************************** 
175- You can optionally configure Django instrumentation to enable sqlcommenter which enriches 
176- the query with contextual information. 
173+ SQLCommenter 
174+ ************ 
175+ You can optionally enable sqlcommenter which enriches the query with contextual 
176+ information. Queries made after setting up trace integration with sqlcommenter 
177+ enabled will have configurable key-value pairs appended to them, e.g. 
178+ ``Users().objects.all()`` will result in 
179+ ``"select * from auth_users; /*traceparent=00-01234567-abcd-01*/"``. This 
180+ supports context propagation between database client and server when database log 
181+ records are enabled. For more information, see: 
182+ 
183+ * `Semantic Conventions - Database Spans <https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#sql-commenter>`_ 
184+ * `sqlcommenter <https://google.github.io/sqlcommenter/>`_ 
177185
178186.. code:: python 
179187
180188    from opentelemetry.instrumentation.django import DjangoInstrumentor 
181189
182190    DjangoInstrumentor().instrument(is_sql_commentor_enabled=True) 
183191
184- 
185- For example, 
186- :: 
187- 
188-    Invoking Users().objects.all() will lead to sql query "select * from auth_users" but when SQLCommenter is enabled 
189-    the query will get appended with some configurable tags like "select * from auth_users /*metrics=value*/;" 
190- 
191- 
192- SQLCommenter Configurations 
193- *************************** 
194- We can configure the tags to be appended to the sqlquery log by adding below variables to the settings.py 
195- 
196- SQLCOMMENTER_WITH_FRAMEWORK = True(Default) or False 
197- 
198- For example, 
199- :: 
200- Enabling this flag will add django framework and it's version which is /*framework='django%3A2.2.3*/ 
201- 
202- SQLCOMMENTER_WITH_CONTROLLER = True(Default) or False 
203- 
204- For example, 
205- :: 
206- Enabling this flag will add controller name that handles the request /*controller='index'*/ 
207- 
208- SQLCOMMENTER_WITH_ROUTE = True(Default) or False 
209- 
210- For example, 
211- :: 
212- Enabling this flag will add url path that handles the request /*route='polls/'*/ 
213- 
214- SQLCOMMENTER_WITH_APP_NAME = True(Default) or False 
215- 
216- For example, 
217- :: 
218- Enabling this flag will add app name that handles the request /*app_name='polls'*/ 
219- 
220- SQLCOMMENTER_WITH_OPENTELEMETRY = True(Default) or False 
221- 
222- For example, 
223- :: 
224- Enabling this flag will add opentelemetry traceparent /*traceparent='00-fd720cffceba94bbf75940ff3caaf3cc-4fd1a2bdacf56388-01'*/ 
225- 
226- SQLCOMMENTER_WITH_DB_DRIVER = True(Default) or False 
227- 
228- For example, 
229- :: 
230- Enabling this flag will add name of the db driver /*db_driver='django.db.backends.postgresql'*/ 
192+ Warning: 
193+     Duplicate sqlcomments may be appended to the sqlquery log if DjangoInstrumentor 
194+     sqlcommenter is enabled in addition to sqlcommenter for an active instrumentation 
195+     of a database driver or object-relational mapper (ORM) in the same database client 
196+     stack. For example, if psycopg2 driver is used and Psycopg2Instrumentor has 
197+     sqlcommenter enabled, then both DjangoInstrumentor and Psycopg2Instrumentor will 
198+     append comments to the query statement. 
199+ 
200+ SQLCommenter with commenter_options 
201+ *********************************** 
202+ The key-value pairs appended to the query can be configured using 
203+ variables in Django ``settings.py``. When sqlcommenter is enabled, all 
204+ available KVs/tags are calculated by default, i.e. ``True`` for each. The 
205+ ``settings.py`` values support *opting out* of specific KVs. 
206+ 
207+ Available settings.py commenter options 
208+ ####################################### 
209+ 
210+ We can configure the tags to be appended to the sqlquery log by adding below variables to 
211+ ``settings.py``, e.g. ``SQLCOMMENTER_WITH_FRAMEWORK = False`` 
212+ 
213+ +-------------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------+ 
214+ | ``settings.py`` variable            | Description                                               | Example                                                                   | 
215+ +=====================================+===========================================================+===========================================================================+ 
216+ | ``SQLCOMMENTER_WITH_FRAMEWORK``     | Django framework name with version (URL encoded).         | ``framework='django%%%%3A4.2.0'``                                         | 
217+ +-------------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------+ 
218+ | ``SQLCOMMENTER_WITH_CONTROLLER``    | Django controller/view name that handles the request.     | ``controller='index'``                                                    | 
219+ +-------------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------+ 
220+ | ``SQLCOMMENTER_WITH_ROUTE``         | URL path pattern that handles the request.                | ``route='polls/'``                                                        | 
221+ +-------------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------+ 
222+ | ``SQLCOMMENTER_WITH_APP_NAME``      | Django app name that handles the request.                 | ``app_name='polls'``                                                      | 
223+ +-------------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------+ 
224+ | ``SQLCOMMENTER_WITH_OPENTELEMETRY`` | OpenTelemetry context as traceparent at time of query.    | ``traceparent='00-fd720cffceba94bbf75940ff3caaf3cc-4fd1a2bdacf56388-01'`` | 
225+ +-------------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------+ 
226+ | ``SQLCOMMENTER_WITH_DB_DRIVER``     | Database driver name used by Django.                      | ``db_driver='django.db.backends.postgresql'``                             | 
227+ +-------------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------+ 
231228
232229API 
233230--- 
0 commit comments