66import weakref
77
88from sentry_sdk ._types import TYPE_CHECKING
9- from sentry_sdk .consts import OP
9+ from sentry_sdk .consts import OP , SPANDATA
1010from sentry_sdk .hub import Hub , _should_send_default_pii
1111from sentry_sdk .scope import add_global_event_processor
1212from sentry_sdk .serializer import add_global_repr_processor
6464 from django .http .request import QueryDict
6565 from django .utils .datastructures import MultiValueDict
6666
67+ from sentry_sdk .tracing import Span
6768 from sentry_sdk .scope import Scope
6869 from sentry_sdk .integrations .wsgi import _ScopedResponse
6970 from sentry_sdk ._types import Event , Hint , EventProcessor , NotImplementedType
@@ -578,7 +579,8 @@ def execute(self, sql, params=None):
578579
579580 with record_sql_queries (
580581 hub , self .cursor , sql , params , paramstyle = "format" , executemany = False
581- ):
582+ ) as span :
583+ _set_db_system_on_span (span , self .db .vendor )
582584 return real_execute (self , sql , params )
583585
584586 def executemany (self , sql , param_list ):
@@ -589,7 +591,8 @@ def executemany(self, sql, param_list):
589591
590592 with record_sql_queries (
591593 hub , self .cursor , sql , param_list , paramstyle = "format" , executemany = True
592- ):
594+ ) as span :
595+ _set_db_system_on_span (span , self .db .vendor )
593596 return real_executemany (self , sql , param_list )
594597
595598 def connect (self ):
@@ -601,10 +604,18 @@ def connect(self):
601604 with capture_internal_exceptions ():
602605 hub .add_breadcrumb (message = "connect" , category = "query" )
603606
604- with hub .start_span (op = OP .DB , description = "connect" ):
607+ with hub .start_span (op = OP .DB , description = "connect" ) as span :
608+ _set_db_system_on_span (span , self .vendor )
605609 return real_connect (self )
606610
607611 CursorWrapper .execute = execute
608612 CursorWrapper .executemany = executemany
609613 BaseDatabaseWrapper .connect = connect
610614 ignore_logger ("django.db.backends" )
615+
616+
617+ # https://github.com/django/django/blob/6a0dc2176f4ebf907e124d433411e52bba39a28e/django/db/backends/base/base.py#L29
618+ # Avaliable in Django 1.8+
619+ def _set_db_system_on_span (span , vendor ):
620+ # type: (Span, str) -> None
621+ span .set_data (SPANDATA .DB_SYSTEM , vendor )
0 commit comments