@@ -32,12 +32,24 @@ def handle_notification(self, notification: Notification) -> None:
3232
3333 def create_engine (self , uri : DatabaseURI ) -> AsyncEngine :
3434 if uri .startswith ('sqlite' ):
35- return create_async_engine (uri , connect_args = {"check_same_thread" : False }, echo = False )
35+ engine = create_async_engine (uri , connect_args = {"check_same_thread" : False }, echo = False )
3636 elif uri .startswith ('mysql' ):
37- return create_async_engine (uri , echo = False )
37+ engine = create_async_engine (uri , echo = False )
3838 else :
3939 raise ValueError ("Unsupported database URI scheme" )
4040
41+ @event .listens_for (engine .sync_engine , "handle_error" )
42+ def handle_error (exc ):
43+ original_exception = exc .original_exception
44+ exception_type = type (original_exception ).__name__
45+ error_code = getattr (original_exception , 'args' , [None , None ])[0 ]
46+ error_message = getattr (original_exception , 'args' , [None , None ])[1 ]
47+
48+ log .error (f"{ exception_type } : { error_code } , \" { error_message } \" " )
49+ raise DBError
50+
51+ return engine
52+
4153 def configure_db_connection (self , uri : Optional [DatabaseURI ] = None ) -> None :
4254 """ Configure the database connection with the provided URI for Uvicorn """
4355 if uri and self .dburi == uri :
0 commit comments