From 510db7ec100b34f3296a655ced5c685b348dd5f2 Mon Sep 17 00:00:00 2001 From: Derek Sharp Date: Mon, 11 Jul 2022 16:30:56 -0400 Subject: [PATCH 1/3] ENH: Move error to error/__init__.py per GH27656 --- doc/source/reference/testing.rst | 1 + pandas/errors/__init__.py | 18 ++++++++++++++++++ pandas/io/sql.py | 9 ++++----- pandas/tests/test_errors.py | 1 + 4 files changed, 24 insertions(+), 5 deletions(-) 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..35905f1b5e6a5 100644 --- a/pandas/errors/__init__.py +++ b/pandas/errors/__init__.py @@ -456,12 +456,30 @@ class AttributeConflictWarning(Warning): """ +class DatabaseError(OSError): + """ + Error is raised when executing sql with bad syntax or sql that throws an error. + + Examples + -------- + >>> import pandas.io.sql as sql + >>> from sqlite3 import connect + >>> conn = connect(':memory:') + >>> sql.read_sql('select * test', conn) # doctest: +SKIP + ... # DatabaseError: Execution failed on sql 'test': near "test": syntax error + + >>> sql.execute('select * from table', conn) # doctest: +SKIP + ... # DatabaseError: Execution failed on sql 'select * from table': no such tabl... + """ + + __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): From bff027a087376001a2f15aedf078655c9021b1ca Mon Sep 17 00:00:00 2001 From: Derek Sharp Date: Thu, 14 Jul 2022 07:37:20 -0400 Subject: [PATCH 2/3] ENH: apply feedback --- pandas/errors/__init__.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pandas/errors/__init__.py b/pandas/errors/__init__.py index 35905f1b5e6a5..1b71389461696 100644 --- a/pandas/errors/__init__.py +++ b/pandas/errors/__init__.py @@ -462,14 +462,11 @@ class DatabaseError(OSError): Examples -------- - >>> import pandas.io.sql as sql + >>> import pandas as pd >>> from sqlite3 import connect >>> conn = connect(':memory:') - >>> sql.read_sql('select * test', conn) # doctest: +SKIP + >>> pd.read_sql('select * test', conn) # doctest: +SKIP ... # DatabaseError: Execution failed on sql 'test': near "test": syntax error - - >>> sql.execute('select * from table', conn) # doctest: +SKIP - ... # DatabaseError: Execution failed on sql 'select * from table': no such tabl... """ From 5d21ca92220ce0007e22db5771c5f51a740c0ad0 Mon Sep 17 00:00:00 2001 From: Derek Sharp Date: Thu, 14 Jul 2022 08:43:42 -0400 Subject: [PATCH 3/3] ENH: remove import --- pandas/errors/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/errors/__init__.py b/pandas/errors/__init__.py index 1b71389461696..08ee5650e97a6 100644 --- a/pandas/errors/__init__.py +++ b/pandas/errors/__init__.py @@ -462,7 +462,6 @@ class DatabaseError(OSError): Examples -------- - >>> import pandas as pd >>> from sqlite3 import connect >>> conn = connect(':memory:') >>> pd.read_sql('select * test', conn) # doctest: +SKIP