6
6
import weakref
7
7
from importlib import import_module
8
8
9
- from sentry_sdk ._compat import string_types
9
+ from sentry_sdk ._compat import string_types , text_type
10
10
from sentry_sdk ._types import TYPE_CHECKING
11
11
from sentry_sdk .consts import OP , SPANDATA
12
12
from sentry_sdk .hub import Hub , _should_send_default_pii
@@ -612,7 +612,7 @@ def execute(self, sql, params=None):
612
612
with record_sql_queries (
613
613
hub , self .cursor , sql , params , paramstyle = "format" , executemany = False
614
614
) as span :
615
- _set_db_data (span , self . db . vendor , self . db . get_connection_params () )
615
+ _set_db_data (span , self )
616
616
return real_execute (self , sql , params )
617
617
618
618
def executemany (self , sql , param_list ):
@@ -624,7 +624,7 @@ def executemany(self, sql, param_list):
624
624
with record_sql_queries (
625
625
hub , self .cursor , sql , param_list , paramstyle = "format" , executemany = True
626
626
) as span :
627
- _set_db_data (span , self . db . vendor , self . db . get_connection_params () )
627
+ _set_db_data (span , self )
628
628
return real_executemany (self , sql , param_list )
629
629
630
630
def connect (self ):
@@ -637,7 +637,7 @@ def connect(self):
637
637
hub .add_breadcrumb (message = "connect" , category = "query" )
638
638
639
639
with hub .start_span (op = OP .DB , description = "connect" ) as span :
640
- _set_db_data (span , self . vendor , self . get_connection_params () )
640
+ _set_db_data (span , self )
641
641
return real_connect (self )
642
642
643
643
CursorWrapper .execute = execute
@@ -646,10 +646,19 @@ def connect(self):
646
646
ignore_logger ("django.db.backends" )
647
647
648
648
649
- def _set_db_data (span , vendor , connection_params ):
650
- # type: (Span, str, Dict[str, str]) -> None
649
+ def _set_db_data (span , cursor_or_db ):
650
+ # type: (Span, Any) -> None
651
+
652
+ db = cursor_or_db .db if hasattr (cursor_or_db , "db" ) else cursor_or_db
653
+ vendor = db .vendor
651
654
span .set_data (SPANDATA .DB_SYSTEM , vendor )
652
655
656
+ connection_params = (
657
+ cursor_or_db .connection .get_dsn_parameters ()
658
+ if hasattr (cursor_or_db , "connection" )
659
+ and hasattr (cursor_or_db .connection , "get_dsn_parameters" )
660
+ else db .get_connection_params ()
661
+ )
653
662
db_name = connection_params .get ("dbname" ) or connection_params .get ("database" )
654
663
if db_name is not None :
655
664
span .set_data (SPANDATA .DB_NAME , db_name )
@@ -660,7 +669,7 @@ def _set_db_data(span, vendor, connection_params):
660
669
661
670
server_port = connection_params .get ("port" )
662
671
if server_port is not None :
663
- span .set_data (SPANDATA .SERVER_PORT , server_port )
672
+ span .set_data (SPANDATA .SERVER_PORT , text_type ( server_port ) )
664
673
665
674
server_socket_address = connection_params .get ("unix_socket" )
666
675
if server_socket_address is not None :
0 commit comments