databricks / databricks-sql-python

Databricks SQL Connector for Python
Apache License 2.0
166 stars 95 forks source link

has_table doesn't work - missing back-quotes around catalog name #232

Open narquette opened 1 year ago

narquette commented 1 year ago

Issue:

When I attempt to see if a table exists (inspection.has_table(table_name='x', schema='y'), I get an error saying that the catalog name must be surrounded by back-quote.

Recreation Steps:

1) Build a sqlalchemy connection to databricks 2) Put sqlalchemy engine into a variable 3) Put inspection (sqlachemy.inspect) into a variable.

The engine will be an parameter for inspect (e.g. inspect = inspect(engine))

4) Attempt to use has table

inspect.has_table(table_name='y', schema='x')

Expected: You will get no error message Actual: You get an error message:

[INVALID_IDENTIFIER] The identifier intelli-intelli-curvgh is invalid. Please, consider quoting it with back-quotes as intelli-intelli-curvgh.(line 1, pos 22)

== SQL == DESCRIBE TABLE intelli-intelli-curvgh.dm2_mortality_in.diagnosis_pre

Environment Info:

OS Windows Python = 3.10

Python Libraries:

databricks-sql-connector==2.9.3 sqlalchemy==1.4.49

susodapop commented 1 year ago

Thanks for the report. We're making a ton of changes to the SQLAlchemy dialect this week. Expect to see this fixed shortly.

narquette commented 1 year ago

This issue also happens when you try to show the table names in a schema.

inspect.get_table_names('')

Error Message:

[INVALID_IDENTIFIER] The identifier intelli-intelli-curvgh is invalid. Please, consider quoting it with back-quotes as intelli-intelli-curvgh.(line 1, pos 24) == SQL == SHOW TABLES FROM intelli-intelli-curvgh.mortalitystudy_2020_deidentified

narquette commented 1 year ago

@susodapop Any update? Has this been put into any branch?

susodapop commented 1 year ago

The update is the same. I'm re-implementing all of sqlalchemy for compatibility with sqla2. This will be captured in those changes. I haven't touched this specifically yet since we're overhauling everything. If you watch the PR's on this repository in the next few days you'll see it pop through. It won't be released until 3.0.0 later this month.