@@ -1006,7 +1006,7 @@ def _execute_insert(self, conn, keys: list[str], data_iter) -> int:
10061006 Each item contains a list of values to be inserted
10071007 """
10081008 data = [dict (zip (keys , row )) for row in data_iter ]
1009- result = conn .execute (self .table .insert (), data )
1009+ result = self . pd_sql .execute (self .table .insert (), data )
10101010 return result .rowcount
10111011
10121012 def _execute_insert_multi (self , conn , keys : list [str ], data_iter ) -> int :
@@ -1023,7 +1023,7 @@ def _execute_insert_multi(self, conn, keys: list[str], data_iter) -> int:
10231023
10241024 data = [dict (zip (keys , row )) for row in data_iter ]
10251025 stmt = insert (self .table ).values (data )
1026- result = conn .execute (stmt )
1026+ result = self . pd_sql .execute (stmt )
10271027 return result .rowcount
10281028
10291029 def insert_data (self ) -> tuple [list [str ], list [np .ndarray ]]:
@@ -1662,8 +1662,14 @@ def execute(self, sql: str | Select | TextClause, params=None):
16621662 """Simple passthrough to SQLAlchemy connectable"""
16631663 args = [] if params is None else [params ]
16641664 if isinstance (sql , str ):
1665- return self .con .exec_driver_sql (sql , * args )
1666- return self .con .execute (sql , * args )
1665+ execute_function = self .con .exec_driver_sql
1666+ else :
1667+ execute_function = self .con .execute
1668+
1669+ try :
1670+ return execute_function (sql , * args )
1671+ except Exception as exc :
1672+ raise DatabaseError (f"Execution failed on sql '{ sql } ': { exc } " ) from exc
16671673
16681674 def read_table (
16691675 self ,
@@ -2077,9 +2083,9 @@ def delete_rows(self, table_name: str, schema: str | None = None) -> None:
20772083 self .meta .reflect (
20782084 bind = self .con , only = [table_name ], schema = schema , views = True
20792085 )
2080- with self .run_transaction () as con :
2086+ with self .run_transaction ():
20812087 table = self .get_table (table_name , schema )
2082- con .execute (table .delete ())
2088+ self .execute (table .delete ())
20832089
20842090 self .meta .clear ()
20852091
@@ -2403,9 +2409,12 @@ def to_sql(
24032409 raise ValueError ("datatypes not supported" ) from exc
24042410
24052411 with self .con .cursor () as cur :
2406- total_inserted = cur .adbc_ingest (
2407- table_name = name , data = tbl , mode = mode , db_schema_name = schema
2408- )
2412+ try :
2413+ total_inserted = cur .adbc_ingest (
2414+ table_name = name , data = tbl , mode = mode , db_schema_name = schema
2415+ )
2416+ except Exception as exc :
2417+ raise DatabaseError ("Execution failed" ) from exc
24092418
24102419 self .con .commit ()
24112420 return total_inserted
@@ -2431,8 +2440,7 @@ def has_table(self, name: str, schema: str | None = None) -> bool:
24312440 def delete_rows (self , name : str , schema : str | None = None ) -> None :
24322441 table_name = f"{ schema } .{ name } " if schema else name
24332442 if self .has_table (name , schema ):
2434- with self .con .cursor () as cur :
2435- cur .execute (f"DELETE FROM { table_name } " )
2443+ self .execute (f"DELETE FROM { table_name } " ).close ()
24362444
24372445 def _create_sql_schema (
24382446 self ,
@@ -2553,7 +2561,10 @@ def insert_statement(self, *, num_rows: int) -> str:
25532561
25542562 def _execute_insert (self , conn , keys , data_iter ) -> int :
25552563 data_list = list (data_iter )
2556- conn .executemany (self .insert_statement (num_rows = 1 ), data_list )
2564+ try :
2565+ conn .executemany (self .insert_statement (num_rows = 1 ), data_list )
2566+ except Exception as exc :
2567+ raise DatabaseError ("Execution failed" ) from exc
25572568 return conn .rowcount
25582569
25592570 def _execute_insert_multi (self , conn , keys , data_iter ) -> int :
0 commit comments