Skip to content

Commit 17f48c0

Browse files
Merge pull request #1320 from phenobarbital/new-drivers
return exceptions on Execute commands for postgresql (asyncpg driver)
2 parents 6eb8c49 + 4cbdb53 commit 17f48c0

File tree

2 files changed

+57
-7
lines changed

2 files changed

+57
-7
lines changed

asyncdb/drivers/pg.py

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
UndefinedColumnError,
3030
UndefinedTableError,
3131
UniqueViolationError,
32+
ForeignKeyViolationError,
33+
NotNullViolationError,
34+
QueryCanceledError
3235
)
3336
from asyncpg.pgproto import pgproto
3437
from ..exceptions import (
@@ -414,10 +417,25 @@ async def execute(self, sentence, *args):
414417
"""
415418
try:
416419
return await self._pool.execute(sentence, *args)
420+
except (
421+
QueryCanceledError,
422+
StatementError,
423+
UniqueViolationError,
424+
ForeignKeyViolationError,
425+
NotNullViolationError
426+
) as err:
427+
self._logger.warning(
428+
f"AsyncPg: {err}"
429+
)
430+
raise
417431
except InterfaceError as err:
418-
raise ProviderError(f"Execute Interface Error: {err}") from err
432+
raise ProviderError(
433+
f"Execute Interface Error: {err}"
434+
) from err
419435
except Exception as err:
420-
raise ProviderError(f"Execute Error: {err}") from err
436+
raise ProviderError(
437+
f"Execute Error: {err}"
438+
) from err
421439

422440

423441
class pgCursor(SQLCursor):
@@ -769,8 +787,24 @@ async def execute(self, sentence: Any, *args, **kwargs) -> Optional[Any]:
769787
await self.valid_operation(sentence)
770788
try:
771789
self._result = await self._connection.execute(sentence, *args, **kwargs)
772-
except (InvalidSQLStatementNameError, PostgresSyntaxError, UndefinedColumnError, UndefinedTableError) as err:
773-
error = f"Sentence Error: {err}"
790+
except (
791+
QueryCanceledError,
792+
StatementError,
793+
UniqueViolationError,
794+
ForeignKeyViolationError,
795+
NotNullViolationError
796+
) as err:
797+
self._logger.warning(
798+
f"AsyncPg: {err}"
799+
)
800+
raise
801+
except (
802+
InvalidSQLStatementNameError,
803+
PostgresSyntaxError,
804+
UndefinedColumnError,
805+
UndefinedTableError
806+
) as err:
807+
error = err
774808
except DuplicateTableError as err:
775809
error = f"Duplicated table: {err}"
776810
except PostgresError as err:
@@ -787,10 +821,26 @@ async def execute_many(self, sentence: str, *args):
787821
await self.valid_operation(sentence)
788822
try:
789823
self._result = await self._connection.executemany(sentence, *args)
824+
except (
825+
QueryCanceledError,
826+
StatementError,
827+
UniqueViolationError,
828+
ForeignKeyViolationError,
829+
NotNullViolationError
830+
) as err:
831+
self._logger.warning(
832+
f"AsyncPg: {err}"
833+
)
834+
raise
790835
except InterfaceWarning as err:
791836
error = f"Interface Warning: {err}"
792-
except (InvalidSQLStatementNameError, PostgresSyntaxError, UndefinedColumnError, UndefinedTableError) as err:
793-
error = f"Sentence Error: {err}"
837+
except (
838+
InvalidSQLStatementNameError,
839+
PostgresSyntaxError,
840+
UndefinedColumnError,
841+
UndefinedTableError
842+
) as err:
843+
error = err
794844
except DuplicateTableError as err:
795845
error = f"Duplicated table: {err}"
796846
except PostgresError as err:

asyncdb/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
__title__ = "asyncdb"
44
__description__ = "Library for Asynchronous data source connections \
55
Collection of asyncio drivers."
6-
__version__ = "2.9.3"
6+
__version__ = "2.9.4"
77
__author__ = "Jesus Lara"
88
__author_email__ = "[email protected]"
99
__license__ = "BSD"

0 commit comments

Comments
 (0)