Installieren von Python-Paketen mit sqlmlutils

Gilt für: SQL Server 2019 (15.x) und höhere Versionen von Azure SQL Managed Instance

Dieser Artikel beschreibt, wie man Funktionen im sqlmlutils-Paket verwendet, um neue Python-Pakete auf eine Instanz von Machine Learning Services auf SQL Server zu installieren. Du kannst die Pakete, die du in Python Skripten installierst, verwenden, die in der Datenbank über die sp_execute_external_script T-SQL-Anweisung ausgeführt werden.

In diesem Artikel wird beschrieben, wie Sie Funktionen im sqlmlutils-Paket verwenden, um neue Python-Pakete in einer Instanz von Machine Learning Services in Azure SQL Managed Instance zu installieren. Du kannst die Pakete, die du in Python Skripten installierst, verwenden, die in der Datenbank über die sp_execute_external_script T-SQL-Anweisung ausgeführt werden.

Hinweis

Du kannst keine Pakete aktualisieren oder deinstallieren, die auf einer Instanz von SQL Managed Instance Machine Learning Services vorinstalliert sind. Eine Liste der derzeit installierten Pakete finden Sie unter Alle installierten Python-Pakete auflisten.

Weitere Informationen zu dem Paketspeicherort und Installationspfaden finden Sie unter Abrufen von Paketinformationen für Python.

Hinweis

Verwenden Sie das in diesem Artikel beschriebene sqlmlutils-Paket, um Python-Pakete zu SQL Server 2019 oder später hinzuzufügen. Informationen zu SQL Server 2017 und früher finden Sie unter Installieren von Paketen mit Python-Tools.

Voraussetzungen

  • Python wurde auf dem Client-Computer installiert, mit dem du dich mit SQL Server verbindest. Du kannst Skripte über die Kommandozeile ausführen oder eine Python-Entwicklungsumgebung wie Visual Studio Code mit der Python-Erweiterung verwenden.

    Die Python-Version auf dem Client-Computer muss mit der Python-Version auf dem Server übereinstimmen, und die Pakete, die du installierst, müssen mit der von dir vorhandenen Python-Version kompatibel sein. Informationen zu der in jeder SQL Server-Version enthaltenen Python-Version finden Sie unter Python- und R-Versionen.

    Verwenden Sie den folgenden T-SQL-Befehl, um die Version von Python einer bestimmten SQL Server-Instanz zu überprüfen.

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    
  • MSSQL-Erweiterung für Visual Studio Code, installiert auf dem Client-Computer, mit dem du dich mit SQL Server verbindest. Sie können andere Datenbankverwaltungs- oder Abfragetools verwenden.

Weitere Überlegungen

  • Die Python-Paketbibliothek befindet sich im Program Files-Ordner Ihrer SQL Server-Instanz. Standardmäßig erfordert die Installation in diesem Ordner Administratorrechte. Weitere Informationen finden Sie unter Speicherort der Paketbibliothek.

  • Die Paketinstallation ist für die SQL-Instanz, die Datenbank und den Benutzer spezifisch, die Sie in den Verbindungsinformationen für sqlmlutils angeben. Um das Paket in mehreren SQL-Instanzen oder Datenbanken oder für verschiedene Benutzer zu verwenden, installieren Sie das Paket für jede einzelne. Die Ausnahme ist ein im Public Scope installiertes Paket, das mit allen Benutzern geteilt wird. sqlmlutils wählt standardmäßig den öffentlichen Umfang nur, wenn du dich als Mitglied der sysadmin Serverrolle verbindest, und den privaten Scope ansonsten. Um als anderer Principal im öffentlichen Bereich zu installieren, übergeben Sie scope=sqlmlutils.Scope.public_scope() an install, wofür die Datenbankrolle db_owner erforderlich ist. Wenn ein Benutzer eine neuere Version eines öffentlichen Pakets installiert, ist das öffentliche Paket nicht betroffen, aber dieser Benutzer hat Zugriff auf die neuere Version.

  • Bevor Sie ein Paket hinzufügen, sollten Sie überprüfen, ob das Paket für die SQL Server-Umgebung geeignet ist.

    • Verwenden Sie Python in der Datenbank für Aufgaben, die von einer engen Integration mit der Datenbank-Engine profitieren, wie z. B. maschinelles Lernen, anstatt Aufgaben, die lediglich die Datenbank abfragen.

    • Wenn du Pakete hinzufügst, die zu viel Rechendruck auf den Server ausüben, leidet die Performance.

    • In einer gehärteten SQL Server-Umgebung sollten Sie folgende Pakettypen vermeiden:

      • Pakete, für die Netzwerkzugriff erforderlich ist
      • Pakete, für die erhöhte Zugriffsrechte für das Dateisystem erforderlich sind
      • Pakete, die für die Webentwicklung oder andere Aufgaben verwendet werden und nicht von der Ausführung in SQL Server profitieren
    • Du kannst das Python-Paket tensorflow nicht mit sqlmlutils installieren. Weitere Informationen und eine Problemumgehung finden Sie unter Bekannte Probleme in SQL Server-Machine Learning Services.

Installieren von sqlmlutils auf dem Clientcomputer

Zur Verwendung von sqlmlutils müssen Sie dies zunächst auf dem Clientcomputer installieren, den Sie mit SQL Server verbinden.

Onlineinstallation von sqlmlutils

Wenn der Client-Computer Internetzugang hat, installieren Sie sqlmlutils mit pip:

pip install sqlmlutils

Offlineinstallation von sqlmlutils

Wenn der Client-Computer keinen Internetzugang hat, installieren Sie sqlmlutils aus einer heruntergeladenen Datei:

  1. Stelle sicher, dass du PIP installiert hast. Weitere Informationen finden Sie unter pip-Installation.

  2. Laden Sie die neueste sqlmlutils-Datei von der sqlmlutils-Releases-Seite auf den Client-Computer herunter. Entpacken Sie die Datei jedoch nicht.

  3. Öffnen Sie eine Eingabeaufforderung und führen Sie den folgenden Befehl aus, um das sqlmlutils-Paket zu installieren. Ersetze den vollständigen Pfad zu der Datei, die du heruntergeladen hast. Dieses Beispiel setzt voraus, dass die heruntergeladene Datei ist c:\temp\sqlmlutils-1.0.0.zip.

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

Hinzufügen eines Python-Pakets in SQL Server

Mit sqlmlutils kannst du Python-Pakete zu einer SQL-Instanz hinzufügen und sie dann in Python-Code verwenden, der in dieser Instanz läuft. sqlmlutils verwendet CREATE EXTERNAL LIBRARY, um das Paket und alle zugehörigen Abhängigkeiten zu installieren.

Das folgende Beispiel fügt das Text-Tools-Paket zu SQL Server hinzu.

Hinzufügen des Pakets über eine Internetverbindung

Wenn der Client-Computer, mit dem du dich mit SQL Server verbindest, Internetzugang hat, kannst du sqlmlutils verwenden, um das Text-Tools-Paket und eventuelle Abhängigkeiten online zu finden und das Paket dann remote in eine SQL Server-Instanz zu installieren.

  1. Öffnen Sie auf dem Clientcomputer Python oder eine Python-Umgebung.

  2. Verwenden Sie die folgenden Befehle, um das Paket text-tools zu installieren. Ersetzen Sie die eigenen Verbindungsdaten der SQL Server-Datenbank. (Wenn Sie eine Windows-Authentifizierung verwenden, müssen Sie die Parameter uid und pwd nicht hinzufügen.)

  1. Öffnen Sie auf dem Clientcomputer Python oder eine Python-Umgebung.

  2. Verwenden Sie die folgenden Befehle, um das Paket text-tools zu installieren. Ersetzen Sie die SQL Server-Datenbankverbindungsinformationen durch Ihre eigenen. Geben Sie außerdem den Namen eines ODBC-Treibers weiter, der auf dem Client-Computer installiert ist, zum Beispiel driver="ODBC Driver 18 for SQL Server", da der Treibername, den sqlmlutils standardmäßig verwendet, nur für Windows gilt.

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

Hinzufügen des Pakets ohne Internetverbindung

Wenn der Client-Computer, mit dem du dich mit dem SQL Server verbindest, keine Internetverbindung hat, nutze pip auf einem Computer, der es hat, um das Paket in einen lokalen Ordner herunterzuladen. Dann kopierst du den Ordner auf den Client-Computer und installierst das Paket offline.

Hinweis

Dieses Verfahren funktioniert für ein Paket, das keine Abhängigkeiten hat. SQLPackageManager.install() löst Abhängigkeiten von PyPI auch dann auf, wenn Sie eine lokale .whl-Datei angeben. Wenn Sie also ein Paket mit Abhängigkeiten hinzufügen möchten, verwenden Sie einen Clientcomputer mit Internetzugang und folgen Sie der Anleitung Paket online hinzufügen.

An einem Computer mit Internetzugang

  1. Öffnen Sie eine Eingabeaufforderung, und führen Sie den folgenden Befehl aus, um einen lokalen Ordner zu erstellen, der das Paket text-tools enthält. In diesem Beispiel wird der Ordner c:\temp\text-tools erstellt.

    pip download text-tools -d c:\temp\text-tools
    
  2. Kopieren Sie den text-tools-Ordner auf den Clientcomputer. Im folgenden Beispiel wird davon ausgegangen, dass Sie ihn nach c:\temp\packages\text-tools kopiert haben.

Auf dem Clientcomputer

Verwenden Sie sqlmlutils, um das Paket (.whl Datei) zu installieren, das pip in den lokalen Ordner heruntergeladen hat.

In diesem Beispiel hat text-tools keine Abhängigkeiten, sodass der text-tools Ordner eine einzelne Datei enthält.

Führen Sie folgendes Python-Skript aus. Ersetzen Sie den tatsächlichen Dateipfad und Paketnamen sowie die eigenen Verbindungsdaten der SQL Server-Datenbank. (Wenn Sie eine Windows-Authentifizierung verwenden, müssen Sie die Parameter uid und pwd nicht hinzufügen.)

Führen Sie folgendes Python-Skript aus. Ersetzen Sie den tatsächlichen Dateipfad und -namen des Pakets sowie die Verbindungsinformationen Ihrer eigenen SQL Server-Datenbank. Geben Sie außerdem den Namen eines ODBC-Treibers weiter, der auf dem Client-Computer installiert ist, zum Beispiel driver="ODBC Driver 18 for SQL Server", da der Treibername, den sqlmlutils standardmäßig verwendet, nur für Windows gilt.

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")

Verwenden Sie das Paket

Sie können das Paket jetzt in einem Python-Skript in SQL Server verwenden. Beispiel:

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)
  '

Entfernen eines Pakets aus SQL Server

Um das text-tools-Paket zu entfernen, führe den folgenden Python-Befehl auf dem Client-Computer aus und benutze dieselbe Verbindungsvariable, die du zuvor definiert hast.

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

Weitere sqlmlutils-Funktionen

Das sqlmlutils-Paket enthält mehrere Funktionen zur Verwaltung von Python-Paketen sowie zur Erstellung, Verwaltung und Ausführung gespeicherter Prozeduren und Abfragen in einem SQL Server. Weitere Informationen finden Sie in der sqlmlutils Python README-Datei.

Weitere Informationen zu sqlmlutils-Funktionen erhalten Sie über die Python-Funktion help. Beispiel:

import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)