File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed
tests/integrations/sqlalchemy Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change 3
3
import re
4
4
5
5
from sentry_sdk ._types import TYPE_CHECKING
6
+ from sentry_sdk .consts import SPANDATA
6
7
from sentry_sdk .hub import Hub
7
8
from sentry_sdk .integrations import Integration , DidNotEnable
8
9
from sentry_sdk .tracing_utils import record_sql_queries
@@ -67,6 +68,9 @@ def _before_cursor_execute(
67
68
span = ctx_mgr .__enter__ ()
68
69
69
70
if span is not None :
71
+ db_system = _get_db_system (conn .engine .name )
72
+ if db_system is not None :
73
+ span .set_data (SPANDATA .DB_SYSTEM , db_system )
70
74
context ._sentry_sql_span = span
71
75
72
76
@@ -102,3 +106,24 @@ def _handle_error(context, *args):
102
106
if ctx_mgr is not None :
103
107
execution_context ._sentry_sql_span_manager = None
104
108
ctx_mgr .__exit__ (None , None , None )
109
+
110
+
111
+ # See: https://docs.sqlalchemy.org/en/20/dialects/index.html
112
+ def _get_db_system (name ):
113
+ # type: (str) -> Optional[str]
114
+ if "sqlite" in name :
115
+ return "sqlite"
116
+
117
+ if "postgres" in name :
118
+ return "postgresql"
119
+
120
+ if "mariadb" in name :
121
+ return "mariadb"
122
+
123
+ if "mysql" in name :
124
+ return "mysql"
125
+
126
+ if "oracle" in name :
127
+ return "oracle"
128
+
129
+ return None
Original file line number Diff line number Diff line change 7
7
from sqlalchemy .orm import relationship , sessionmaker
8
8
9
9
from sentry_sdk import capture_message , start_transaction , configure_scope
10
+ from sentry_sdk .consts import SPANDATA
10
11
from sentry_sdk .integrations .sqlalchemy import SqlalchemyIntegration
11
12
from sentry_sdk .serializer import MAX_EVENT_BYTES
12
13
from sentry_sdk .utils import json_dumps , MAX_STRING_LENGTH
@@ -119,6 +120,9 @@ class Address(Base):
119
120
120
121
(event ,) = events
121
122
123
+ for span in event ["spans" ]:
124
+ assert span ["data" ][SPANDATA .DB_SYSTEM ] == "sqlite"
125
+
122
126
assert (
123
127
render_span_tree (event )
124
128
== """\
You can’t perform that action at this time.
0 commit comments