This is an automated email from the ASF dual-hosted git repository.

mobuchowski 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 7f1fe8167a7 Fix Databricks sqlalchemy URL construction (#54478)
7f1fe8167a7 is described below

commit 7f1fe8167a78d9044035f2616b4f21390b155c4b
Author: Chang-Yen (Brian) Li <[email protected]>
AuthorDate: Thu Aug 14 17:15:30 2025 +0800

    Fix Databricks sqlalchemy URL construction (#54478)
    
    * fix: use _get_token in url construction
    
    * fix: assert the correct url
---
 .../providers/databricks/hooks/databricks_sql.py   |  6 ++--
 .../unit/databricks/hooks/test_databricks_sql.py   | 33 ++++++++++------------
 2 files changed, 17 insertions(+), 22 deletions(-)

diff --git 
a/providers/databricks/src/airflow/providers/databricks/hooks/databricks_sql.py 
b/providers/databricks/src/airflow/providers/databricks/hooks/databricks_sql.py
index c689324f97d..d86d0453fa5 100644
--- 
a/providers/databricks/src/airflow/providers/databricks/hooks/databricks_sql.py
+++ 
b/providers/databricks/src/airflow/providers/databricks/hooks/databricks_sql.py
@@ -179,7 +179,6 @@ class DatabricksSqlHook(BaseDatabricksHook, DbApiHook):
 
         :return: the extracted sqlalchemy.engine.URL object.
         """
-        conn = self.get_conn()
         url_query = {
             "http_path": self._http_path,
             "catalog": self.catalog,
@@ -189,9 +188,8 @@ class DatabricksSqlHook(BaseDatabricksHook, DbApiHook):
         return URL.create(
             drivername="databricks",
             username="token",
-            password=conn.password,
-            host=conn.host,
-            port=conn.port,
+            password=self._get_token(raise_error=True),
+            host=self.host,
             query=url_query,
         )
 
diff --git 
a/providers/databricks/tests/unit/databricks/hooks/test_databricks_sql.py 
b/providers/databricks/tests/unit/databricks/hooks/test_databricks_sql.py
index 9e2ee58d600..38fd5e26bdd 100644
--- a/providers/databricks/tests/unit/databricks/hooks/test_databricks_sql.py
+++ b/providers/databricks/tests/unit/databricks/hooks/test_databricks_sql.py
@@ -39,7 +39,6 @@ TASK_ID = "databricks-sql-operator"
 DEFAULT_CONN_ID = "databricks_default"
 HOST = "xx.cloud.databricks.com"
 HOST_WITH_SCHEME = "https://xx.cloud.databricks.com";
-PORT = 443
 TOKEN = "token"
 HTTP_PATH = "sql/protocolv1/o/1234567890123456/0123-456789-abcd123"
 SCHEMA = "test_schema"
@@ -112,38 +111,36 @@ def mock_timer():
         yield mock_timer
 
 
-def make_mock_connection():
-    return Connection(
-        conn_id=DEFAULT_CONN_ID,
-        conn_type="databricks",
-        host=HOST,
-        port=PORT,
-        login="token",
-        password=TOKEN,
-    )
-
-
-def test_sqlachemy_url_property(mock_get_conn):
-    mock_get_conn.return_value = make_mock_connection()
+def test_sqlachemy_url_property():
     hook = DatabricksSqlHook(
         databricks_conn_id=DEFAULT_CONN_ID, http_path=HTTP_PATH, 
catalog=CATALOG, schema=SCHEMA
     )
     url = hook.sqlalchemy_url.render_as_string(hide_password=False)
     expected_url = (
-        f"databricks://token:{TOKEN}@{HOST}:{PORT}?"
+        f"databricks://token:{TOKEN}@{HOST}?"
         f"catalog={CATALOG}&http_path={quote_plus(HTTP_PATH)}&schema={SCHEMA}"
     )
     assert url == expected_url
 
 
-def test_get_uri(mock_get_conn):
-    mock_get_conn.return_value = make_mock_connection()
+def test_get_sqlalchemy_engine():
+    hook = DatabricksSqlHook(
+        databricks_conn_id=DEFAULT_CONN_ID, http_path=HTTP_PATH, 
catalog=CATALOG, schema=SCHEMA
+    )
+    engine = hook.get_sqlalchemy_engine()
+    assert engine.url.render_as_string(hide_password=False) == (
+        f"databricks://token:{TOKEN}@{HOST}?"
+        f"catalog={CATALOG}&http_path={quote_plus(HTTP_PATH)}&schema={SCHEMA}"
+    )
+
+
+def test_get_uri():
     hook = DatabricksSqlHook(
         databricks_conn_id=DEFAULT_CONN_ID, http_path=HTTP_PATH, 
catalog=CATALOG, schema=SCHEMA
     )
     uri = hook.get_uri()
     expected_uri = (
-        f"databricks://token:{TOKEN}@{HOST}:{PORT}?"
+        f"databricks://token:{TOKEN}@{HOST}?"
         f"catalog={CATALOG}&http_path={quote_plus(HTTP_PATH)}&schema={SCHEMA}"
     )
     assert uri == expected_uri

Reply via email to