Skip to content

Commit 3e85df2

Browse files
DeanChensjhangfei
andauthored
Update DatabaseSessionService db_engine construction (google#195)
Co-authored-by: Hangfei Lin <[email protected]>
1 parent 9a44831 commit 3e85df2

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/google/adk/sessions/database_session_service.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from sqlalchemy.engine import create_engine
3131
from sqlalchemy.engine import Engine
3232
from sqlalchemy.ext.mutable import MutableDict
33+
from sqlalchemy.exc import ArgumentError
3334
from sqlalchemy.inspection import inspect
3435
from sqlalchemy.orm import DeclarativeBase
3536
from sqlalchemy.orm import Mapped
@@ -189,13 +190,20 @@ def __init__(self, db_url: str):
189190
# 2. Create all tables based on schema
190191
# 3. Initialize all properies
191192

192-
supported_dialects = ["postgresql", "mysql", "sqlite"]
193-
dialect = db_url.split("://")[0]
194-
195-
if dialect in supported_dialects:
193+
try:
196194
db_engine = create_engine(db_url)
197-
else:
198-
raise ValueError(f"Unsupported database URL: {db_url}")
195+
except Exception as e:
196+
if isinstance(e, ArgumentError):
197+
raise ValueError(
198+
f"Invalid database URL format or argument '{db_url}'."
199+
) from e
200+
if isinstance(e, ImportError):
201+
raise ValueError(
202+
f"Database related module not found for URL '{db_url}'."
203+
) from e
204+
raise ValueError(
205+
f"Failed to create database engine for URL '{db_url}'"
206+
) from e
199207

200208
# Get the local timezone
201209
local_timezone = get_localzone()

0 commit comments

Comments
 (0)