Skip to content

Commit

Permalink
BUG: AttributeError: 'function' object has no attribute 'currentfram…
Browse files Browse the repository at this point in the history
…e' (pandas-dev#48736)

* sqlalchemy.inspect shouldnt shadow builtin inspect

* 🏷️

* reword in terms of to_sql

* import sqlalchemy.inspect as sqlalchemy_inspect

Co-authored-by: MarcoGorelli <>
  • Loading branch information
MarcoGorelli authored and phofl committed Sep 30, 2022
1 parent c7e36af commit c214ec1
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
16 changes: 8 additions & 8 deletions pandas/io/sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -1634,8 +1634,8 @@ def prep_table(

def check_case_sensitive(
self,
name,
schema,
name: str,
schema: str | None,
) -> None:
"""
Checks table name for issues with case-sensitivity.
Expand All @@ -1644,10 +1644,10 @@ def check_case_sensitive(
if not name.isdigit() and not name.islower():
# check for potentially case sensitivity issues (GH7815)
# Only check when name is not a number and name is not lower case
from sqlalchemy import inspect
from sqlalchemy import inspect as sqlalchemy_inspect

with self.connectable.connect() as conn:
insp = inspect(conn)
insp = sqlalchemy_inspect(conn)
table_names = insp.get_table_names(schema=schema or self.meta.schema)
if name not in table_names:
msg = (
Expand All @@ -1665,11 +1665,11 @@ def check_case_sensitive(
def to_sql(
self,
frame,
name,
name: str,
if_exists: str = "fail",
index: bool = True,
index_label=None,
schema=None,
schema: str | None = None,
chunksize=None,
dtype: DtypeArg | None = None,
method=None,
Expand Down Expand Up @@ -1756,9 +1756,9 @@ def tables(self):
return self.meta.tables

def has_table(self, name: str, schema: str | None = None):
from sqlalchemy import inspect
from sqlalchemy import inspect as sqlalchemy_inspect

insp = inspect(self.connectable)
insp = sqlalchemy_inspect(self.connectable)
return insp.has_table(name, schema or self.meta.schema)

def get_table(self, table_name: str, schema: str | None = None) -> Table:
Expand Down
15 changes: 11 additions & 4 deletions pandas/tests/io/test_sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -1357,10 +1357,17 @@ def test_not_reflect_all_tables(self):

def test_warning_case_insensitive_table_name(self, test_frame1):
# see gh-7815
#
# We can't test that this warning is triggered, a the database
# configuration would have to be altered. But here we test that
# the warning is certainly NOT triggered in a normal case.
with tm.assert_produces_warning(
UserWarning,
match=(
r"The provided table name 'TABLE1' is not found exactly as such in "
r"the database after writing the table, possibly due to case "
r"sensitivity issues. Consider using lower case table names."
),
):
sql.SQLDatabase(self.conn).check_case_sensitive("TABLE1", "")

# Test that the warning is certainly NOT triggered in a normal case.
with tm.assert_produces_warning(None):
test_frame1.to_sql("CaseSensitive", self.conn)

Expand Down

0 comments on commit c214ec1

Please sign in to comment.