@@ -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