@@ -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+ try :
1666+ return self .con .exec_driver_sql (sql , * args )
1667+ except Exception as exc :
1668+ raise DatabaseError ("foo" ) from exc
1669+ try :
1670+ return self .con .execute (sql , * args )
1671+ except Exception as exc :
1672+ raise DatabaseError 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
@@ -2148,6 +2154,8 @@ def execute(self, sql: str | Select | TextClause, params=None):
21482154
21492155 ex = DatabaseError (f"Execution failed on sql '{ sql } ': { exc } " )
21502156 raise ex from exc
2157+ finally :
2158+ cur .close ()
21512159
21522160 def read_table (
21532161 self ,
@@ -2403,9 +2411,12 @@ def to_sql(
24032411 raise ValueError ("datatypes not supported" ) from exc
24042412
24052413 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- )
2414+ try :
2415+ total_inserted = cur .adbc_ingest (
2416+ table_name = name , data = tbl , mode = mode , db_schema_name = schema
2417+ )
2418+ except Exception as exc :
2419+ raise DatabaseError ("foo" ) from exc
24092420
24102421 self .con .commit ()
24112422 return total_inserted
@@ -2431,8 +2442,7 @@ def has_table(self, name: str, schema: str | None = None) -> bool:
24312442 def delete_rows (self , name : str , schema : str | None = None ) -> None :
24322443 table_name = f"{ schema } .{ name } " if schema else name
24332444 if self .has_table (name , schema ):
2434- with self .con .cursor () as cur :
2435- cur .execute (f"DELETE FROM { table_name } " )
2445+ self .execute (f"DELETE FROM { table_name } " )
24362446
24372447 def _create_sql_schema (
24382448 self ,
@@ -2553,7 +2563,10 @@ def insert_statement(self, *, num_rows: int) -> str:
25532563
25542564 def _execute_insert (self , conn , keys , data_iter ) -> int :
25552565 data_list = list (data_iter )
2556- conn .executemany (self .insert_statement (num_rows = 1 ), data_list )
2566+ try :
2567+ conn .executemany (self .insert_statement (num_rows = 1 ), data_list )
2568+ except Exception as exc :
2569+ raise DatabaseError ("foo" ) from exc
25572570 return conn .rowcount
25582571
25592572 def _execute_insert_multi (self , conn , keys , data_iter ) -> int :
0 commit comments