簡體   English   中英

來自 Databricks 的 Python 代碼連接到 SQL 服務器

[英]Python Code from Databricks to connect to SQL server

我正在嘗試從 Databricks 執行 python 代碼,該代碼主要建立從 Python 到 SQL 服務器的連接,使用 Z2724269B9B7614A.F.

我使用了'jaydebeapi' python 庫,當我運行代碼時,它給出錯誤消息“JayDeBeApi throws AttributeError: '_jpype.PyJPField' object has no attribute 'getStaticAttribute'”

我在互聯網上搜索,發現 jaydebeapi 中使用的 Jpype 庫是問題所在,我將其降級為 0.6.3 版本。

但我仍然遇到同樣的錯誤。 誰能解釋我如何進行此更改並在數據塊中運行。

或者有沒有我可以使用的替代庫。

Why not directly follow the offical documents of databricks below to install Microsoft JDBC Driver for SQL Server for Spark Connector and refer to the sample code of Python using JDBC connect SQL Server.

  1. SQL 使用 Apache Spark 連接器的數據庫
  2. SQL Databases using JDBC and its Python example with the jdbc url of MS SQL Server

如果您使用的是 Azure,則 Azure Databricks 的文檔相同,如下所示。

  1. SQL 使用 Azure Databricks 的 Apache Spark 連接器的數據庫
  2. SQL 數據庫使用 JDBC用於 Azure Databricks

在此處輸入圖像描述

這是 JayDeBeApi 的一個已知問題,您可以查看GitHub上的問題。

由於 0.6.3 中的一個錯誤,私有變量作為接口的一部分被公開。 0.6.3 也有一個默認的 class 定制器,如果方法匹配 Java bean 模式,它會自動創建一個屬性來獲取和設置。 這個屬性定制器在許多常見的 java.lang 類已經加載后加載較晚,並且不具有追溯性,因此只有在初始化器之后發生的用戶加載的類才會進行定制。 私有變量錯誤會掩蓋屬性定制器,因為屬性定制器不會覆蓋字段。 一些庫在不知不覺中訪問私有變量,假設他們使用的是屬性定制器。 定制器既不必要,又會導致新程序員經常出錯。 錯誤行為已被刪除,有問題的屬性定制器已在 0.7 中默認禁用。

向模塊添加行以啟用舊的屬性行為。 但這不會重新啟用以前對私有變量的錯誤訪問。 因此,利用繞過 java 的 getter/setter 的先前行為的代碼將需要使用反射 API。

要啟用屬性定制器,請使用

try:
   import jpype.beans
except ImportError:
   pass

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM