@@ -1006,7 +1006,7 @@ def _execute_insert(self, conn, keys: list[str], data_iter) -> int:
1006
1006
Each item contains a list of values to be inserted
1007
1007
"""
1008
1008
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 )
1010
1010
return result .rowcount
1011
1011
1012
1012
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:
1023
1023
1024
1024
data = [dict (zip (keys , row )) for row in data_iter ]
1025
1025
stmt = insert (self .table ).values (data )
1026
- result = conn .execute (stmt )
1026
+ result = self . pd_sql .execute (stmt )
1027
1027
return result .rowcount
1028
1028
1029
1029
def insert_data (self ) -> tuple [list [str ], list [np .ndarray ]]:
@@ -1662,8 +1662,14 @@ def execute(self, sql: str | Select | TextClause, params=None):
1662
1662
"""Simple passthrough to SQLAlchemy connectable"""
1663
1663
args = [] if params is None else [params ]
1664
1664
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
1667
1673
1668
1674
def read_table (
1669
1675
self ,
@@ -2077,9 +2083,9 @@ def delete_rows(self, table_name: str, schema: str | None = None) -> None:
2077
2083
self .meta .reflect (
2078
2084
bind = self .con , only = [table_name ], schema = schema , views = True
2079
2085
)
2080
- with self .run_transaction () as con :
2086
+ with self .run_transaction ():
2081
2087
table = self .get_table (table_name , schema )
2082
- con .execute (table .delete ())
2088
+ self .execute (table .delete ())
2083
2089
2084
2090
self .meta .clear ()
2085
2091
@@ -2403,9 +2409,12 @@ def to_sql(
2403
2409
raise ValueError ("datatypes not supported" ) from exc
2404
2410
2405
2411
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
2409
2418
2410
2419
self .con .commit ()
2411
2420
return total_inserted
@@ -2431,8 +2440,7 @@ def has_table(self, name: str, schema: str | None = None) -> bool:
2431
2440
def delete_rows (self , name : str , schema : str | None = None ) -> None :
2432
2441
table_name = f"{ schema } .{ name } " if schema else name
2433
2442
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 ()
2436
2444
2437
2445
def _create_sql_schema (
2438
2446
self ,
@@ -2553,7 +2561,10 @@ def insert_statement(self, *, num_rows: int) -> str:
2553
2561
2554
2562
def _execute_insert (self , conn , keys , data_iter ) -> int :
2555
2563
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
2557
2568
return conn .rowcount
2558
2569
2559
2570
def _execute_insert_multi (self , conn , keys , data_iter ) -> int :
0 commit comments