diff --git a/doc/source/reference/testing.rst b/doc/source/reference/testing.rst index e617712aa8f5e..338dd87aa8c62 100644 --- a/doc/source/reference/testing.rst +++ b/doc/source/reference/testing.rst @@ -29,6 +29,7 @@ Exceptions and warnings errors.AttributeConflictWarning errors.ClosedFileError errors.CSSWarning + errors.DatabaseError errors.DataError errors.DtypeWarning errors.DuplicateLabelError diff --git a/pandas/errors/__init__.py b/pandas/errors/__init__.py index 0e0409ccb0932..08ee5650e97a6 100644 --- a/pandas/errors/__init__.py +++ b/pandas/errors/__init__.py @@ -456,12 +456,26 @@ class AttributeConflictWarning(Warning): """ +class DatabaseError(OSError): + """ + Error is raised when executing sql with bad syntax or sql that throws an error. + + Examples + -------- + >>> from sqlite3 import connect + >>> conn = connect(':memory:') + >>> pd.read_sql('select * test', conn) # doctest: +SKIP + ... # DatabaseError: Execution failed on sql 'test': near "test": syntax error + """ + + __all__ = [ "AbstractMethodError", "AccessorRegistrationWarning", "AttributeConflictWarning", "ClosedFileError", "CSSWarning", + "DatabaseError", "DataError", "DtypeWarning", "DuplicateLabelError", diff --git a/pandas/io/sql.py b/pandas/io/sql.py index e4111f24ed295..f591e7b8676f6 100644 --- a/pandas/io/sql.py +++ b/pandas/io/sql.py @@ -31,7 +31,10 @@ DtypeArg, ) from pandas.compat._optional import import_optional_dependency -from pandas.errors import AbstractMethodError +from pandas.errors import ( + AbstractMethodError, + DatabaseError, +) from pandas.util._exceptions import find_stack_level from pandas.core.dtypes.common import ( @@ -56,10 +59,6 @@ from sqlalchemy import Table -class DatabaseError(OSError): - pass - - # ----------------------------------------------------------------------------- # -- Helper functions diff --git a/pandas/tests/test_errors.py b/pandas/tests/test_errors.py index f003e1d07bca6..187d5399f5985 100644 --- a/pandas/tests/test_errors.py +++ b/pandas/tests/test_errors.py @@ -34,6 +34,7 @@ "PossibleDataLossError", "IncompatibilityWarning", "AttributeConflictWarning", + "DatabaseError", ], ) def test_exception_importable(exc):