使用 sqlmlutils 安裝 Python 套件

適用於: SQL Server 2019 (15.x) 及以後版本 Azure SQL 受控執行個體

本文說明如何利用 sqlmlutils 套件中的函式,將新的 Python 套件安裝到 SQL Server 上的 機器學習 Services 實例中。 您可以在透過 sp_execute_external_script T-SQL 陳述式於資料庫內執行的 Python 指令碼中,使用您安裝的套件。

本文描述如何使用 sqlmlutils 套件中的函式,以將新 Python 套件安裝到 Azure SQL 受控執行個體機器學習服務的執行個體上。 你可以在透過 sp_execute_external_script T-SQL 陳述式於資料庫內執行的 Python 指令碼中,使用你安裝的套件。

注意

你無法更新或卸載預裝在 SQL 受管理執行個體 機器學習 服務實例上的套件。 若要檢視目前已安裝的套件清單,請參閱列出所有已安裝的 Python 套件 (部分機器翻譯)。

如需套件位置和安裝路徑的詳細資訊,請參閱取得 Python 套件資訊。

注意

請使用本文中描述的 sqlmlutils 套件,將 Python 套件加入 SQL Server 2019 或更新版本。 SQL Server 2017 及舊版請參閱使用 Python 工具安裝套件。

Prerequisites

  • Python 安裝在你用來連接 SQL Server 的客戶端電腦上。 你可以從命令列執行腳本,或使用Python開發環境如 Visual Studio Code 並加 Python 擴充功能。

    客戶端電腦上的 Python 版本必須與伺服器端的 Python 版本相符,且你安裝的套件必須與你現有的 Python 版本相容。 如需每個 SQL Server 版本隨附的 Python 版本相關資訊,請參閱 Python 和 R 版本。

    若要確認特定 SQL Server 執行個體上的 Python 版本,請使用下列 T-SQL 命令。

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    
  • 安裝在你用來連接 SQL Server 的客戶端電腦上的 Visual Studio Code MSSQL 擴充功能。 你可以使用其他資料庫管理或查詢工具。

其他考量

  • Python 套件函式庫位於你 SQL Server 實例的 Program Files 資料夾中。 預設情況下,安裝在此資料夾需要管理員權限。 如需詳細資訊,請參閱套件程式庫位置。

  • 套件安裝是您在提供給 sqlmlutils的連線資訊中指定的 SQL 執行個體、資料庫和使用者專用的。 若要在多個 SQL 實例或資料庫中使用該套件,或針對不同使用者,請為每個 SQL 安裝套件。 例外是安裝於 公開 範圍的套件,該套件與所有使用者共享。 SQLMLUTILS 預設只在你以伺服器角色成員 sysadmin 身份連線時選擇公開範圍,否則選擇私有範圍。 若要以另一個主體的身分安裝到公用範圍中,請將 scope=sqlmlutils.Scope.public_scope() 傳遞給 install,這需要 db_owner 資料庫角色。 如果使用者安裝了公開套件的新版本,公開套件不會受到影響,但該使用者可以存取較新的版本。

  • 新增套件之前,請考慮套件是否適合用於 SQL Server 環境。

    • 在資料庫中使用 Python 來處理需要與資料庫引擎緊密整合的任務,例如機器學習,而非單純查詢資料庫的任務。

    • 如果你加入對伺服器造成過大計算壓力的套件,效能就會下降。

    • 在強化的 SQL Server 環境中,請避免以下類型的套件:

      • 需要網路存取的套件
      • 需要較高權限檔案系統存取權限的套件
      • 用於網頁程式開發或其他工作,但無法透過在 SQL Server 內部執行而獲益的套件
    • 你無法用 sqlmlutils 安裝 Python 套件 tensorflow。 如需詳細資訊及因應措施,請參閱 SQL Server 機器學習服務中的已知問題。

在用戶端電腦上安裝 sqlmlutils

若要使用 sqlmlutils,您必須先將其安裝在用來連接到 SQL Server 的用戶端電腦上。

線上安裝 sqlmlutils

如果用戶端電腦有網路連線,請使用 pip 安裝 sqlmlutils:

pip install sqlmlutils

離線安裝 sqlmlutils

如果用戶端電腦無法連網,請從下載的檔案安裝 sqlmlutils :

  1. 確定你有安裝 PIP 。 欲了解更多資訊,請參閱 pip 安裝。

  2. 從 SQLMLUTILS 發佈頁面下載最新的 sqlmlutils 檔案到用戶端電腦。 請勿解壓縮檔案。

  3. 打開 命令提示字元 並執行以下指令來安裝 sqlmlutils 套件。 請替換為您下載檔案的完整路徑。 此範例假設下載的檔案為 c:\temp\sqlmlutils-1.0.0.zip。

    pip install --upgrade --upgrade-strategy only-if-needed c:\temp\sqlmlutils-1.0.0.zip
    

在 SQL Server 上新增 Python 套件

透過使用 sqlmlutils,你可以將 Python 套件加入 SQL 實例,然後在該實例執行的 Python 程式碼中使用它們。 sqlmlutils 使用 CREATE EXTERNAL LIBRARY 安裝此套件及其每個相依性套件。

以下範例將 text-tools 套件加入 SQL Server。

線上新增套件

如果你用來連接 SQL Server 的用戶端電腦可存取網際網路,你可以使用 sqlmlutils 在線上尋找 text-tools 套件及其任何相依性,然後將套件遠端安裝到 SQL Server 執行個體。

  1. 在用戶端電腦上,開啟 Python 或 Python 環境。

  2. 使用下列命令來安裝 text-tools 套件。 替代自有的 SQL Server 資料庫連線資訊 (如果使用 Windows 驗證,則不需要 uid 和 pwd 參數)。

  1. 在用戶端電腦上,開啟 Python 或 Python 環境。

  2. 使用下列命令來安裝 text-tools 套件。 請改用您自己的 SQL Server 資料庫連線資訊。 同時傳遞安裝在用戶端電腦上的 ODBC 驅動程式名稱,例如 driver="ODBC Driver 18 for SQL Server",因為 sqlmlutils 預設使用的驅動程式名稱僅適用於 Windows。

import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="server", database="database", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text-tools")

離線新增套件

如果你用來連接 SQL Server 的用戶端電腦沒有網路連線,請在有網路連線的電腦上使用 pip,將套件下載到本地資料夾。 接著你把資料夾複製到客戶端電腦,離線安裝套件。

注意

此程序適用於無依賴的套件。 SQLPackageManager.install() 即使你傳遞本地 .whl 檔案,也能解決來自 PyPI 的相依性,因此若要新增有相依性的套件,請使用有網路連線的用戶端電腦,並依照 「新增套件」操作。

在有網路的電腦上

  1. 開啟 [命令提示字元] 並執行下列命令,以建立包含 text-tools 套件的本機資料夾。 這個範例會建立 c:\temp\text-tools 資料夾。

    pip download text-tools -d c:\temp\text-tools
    
  2. 將 text-tools 資料夾複製到用戶端電腦。 下列範例假設您已將其複製到 c:\temp\packages\text-tools。

在用戶端電腦上

使用 sqlmlutils 安裝 pip 下載的套件(.whl檔案)到本地資料夾。

在此範例中, text-tools 沒有相依關係,因此資料夾 text-tools 只存放一個檔案。

請執行下列 Python 指令碼。 替代實際檔案路徑和套件名稱,以及自有的 SQL Server 資料庫連線資訊 (如果使用 Windows 驗證,則不需要 uid 和 pwd 參數)。

請執行下列 Python 指令碼。 替代實際檔案路徑和套件名稱,以及自有的 SQL Server 資料庫連線資訊。 同時傳遞安裝在用戶端電腦上的 ODBC 驅動程式名稱,例如 driver="ODBC Driver 18 for SQL Server",因為 sqlmlutils 預設使用的驅動程式名稱僅適用於 Windows。

import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="yourserver", database="yourdatabase", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text_tools-1.0.0-py3-none-any.whl")

使用套件

您現在可以在 SQL Server 的 Python 指令碼中使用套件。 例如:

EXECUTE sp_execute_external_script
  @language = N'Python',
  @script = N'
from text_tools.finders import find_best_string
corpus = "Lorem Ipsum text"
query = "Ipsum"
first_match = find_best_string(query, corpus)
print(first_match)
  '

從 SQL Server 移除套件

要移除 text-tools 套件,請在用戶端電腦上執行以下 Python 指令,使用你先前定義的相同連線變數。

sqlmlutils.SQLPackageManager(connection).uninstall("text-tools")

sqlmlutils 的更多函式

sqlmlutils 套件包含多項用於管理 Python 套件,以及在 SQL Server 中建立、管理和執行儲存程序與查詢的函式。 欲了解更多資訊,請參閱 sqlmlutils 的 Python README 檔案。

如需任何 sqlmlutils 函數的詳細資訊,請使用 Python help 函數。 例如:

import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)