This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 6d322c97f87 Fix SADeprecationWarning when using inspector with
SQLAlchemy in DbApiHook (#48938)
6d322c97f87 is described below
commit 6d322c97f87c3b347b53c2feec03a9c1a764cfbe
Author: David Blain <[email protected]>
AuthorDate: Mon Apr 28 09:53:12 2025 +0200
Fix SADeprecationWarning when using inspector with SQLAlchemy in DbApiHook
(#48938)
* refactor: Use inspect method instead of deprecated Inspector.from_engine
* refactor: Re-organized imports
---------
Co-authored-by: David Blain <[email protected]>
---
.../common/sql/src/airflow/providers/common/sql/hooks/sql.py | 10 +++++-----
.../common/sql/src/airflow/providers/common/sql/hooks/sql.pyi | 4 ++--
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.py
b/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.py
index 8f0c46d52a2..3d75be09652 100644
--- a/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.py
+++ b/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.py
@@ -37,8 +37,8 @@ import sqlparse
from deprecated import deprecated
from methodtools import lru_cache
from more_itertools import chunked
-from sqlalchemy import create_engine
-from sqlalchemy.engine import Inspector, make_url
+from sqlalchemy import create_engine, inspect
+from sqlalchemy.engine import make_url
from sqlalchemy.exc import ArgumentError, NoSuchModuleError
from typing_extensions import Literal
@@ -56,7 +56,7 @@ from airflow.utils.module_loading import import_string
if TYPE_CHECKING:
from pandas import DataFrame
from polars import DataFrame as PolarsDataFrame
- from sqlalchemy.engine import URL
+ from sqlalchemy.engine import URL, Engine, Inspector
from airflow.models import Connection
from airflow.providers.openlineage.extractors import OperatorLineage
@@ -307,7 +307,7 @@ class DbApiHook(BaseHook):
msg = "`sqlalchemy_url` property should be implemented in the
provider subclass."
raise NotImplementedError(msg)
- def get_sqlalchemy_engine(self, engine_kwargs=None):
+ def get_sqlalchemy_engine(self, engine_kwargs=None) -> Engine:
"""
Get an sqlalchemy_engine object.
@@ -328,7 +328,7 @@ class DbApiHook(BaseHook):
@property
def inspector(self) -> Inspector:
- return Inspector.from_engine(self.get_sqlalchemy_engine())
+ return inspect(self.get_sqlalchemy_engine())
@cached_property
def dialect_name(self) -> str:
diff --git
a/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi
b/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi
index d95daa4d0e9..58919009b91 100644
--- a/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi
+++ b/providers/common/sql/src/airflow/providers/common/sql/hooks/sql.pyi
@@ -38,7 +38,7 @@ from typing import Any, Callable, Protocol, TypeVar, overload
from _typeshed import Incomplete as Incomplete
from pandas import DataFrame as DataFrame
-from sqlalchemy.engine import URL as URL, Inspector as Inspector
+from sqlalchemy.engine import URL as URL, Engine as Engine, Inspector as
Inspector
from airflow.hooks.base import BaseHook as BaseHook
from airflow.models import Connection as Connection
@@ -93,7 +93,7 @@ class DbApiHook(BaseHook):
def get_uri(self) -> str: ...
@property
def sqlalchemy_url(self) -> URL: ...
- def get_sqlalchemy_engine(self, engine_kwargs: Incomplete | None = None):
...
+ def get_sqlalchemy_engine(self, engine_kwargs: Incomplete | None = None)
-> Engine: ...
@property
def inspector(self) -> Inspector: ...
@cached_property