Instalowanie pakietów języka Python za pomocą narzędzia sqlmlutils

Dotyczy: SQL Server 2019 (15.x) i nowsze wersje usługi Azure SQL Managed Instance

Ten artykuł opisuje, jak używać funkcji w pakiecie sqlmlutils do instalacji nowych pakietów Python na instancji Machine Learning Services na SQL Server. Możesz używać pakietów, które instalujesz, w skryptach języka Python uruchamianych w bazie danych za pomocą instrukcji T-SQL sp_execute_external_script.

W tym artykule opisano sposób używania funkcji w pakiecie sqlmlutils do instalowania nowych pakietów języka Python w wystąpieniu usług Azure SQL Managed Instance Machine Learning Services. Możesz używać pakietów instalowanych w skryptach języka Python uruchamianych w bazie danych za pomocą instrukcji T-SQL sp_execute_external_script.

Uwaga / Notatka

Nie możesz aktualizować ani odinstalować pakietów, które są preinstalowane na instancji SQL Managed Instance Machine Learning Services. Aby wyświetlić listę aktualnie zainstalowanych pakietów, zobacz Wyświetlanie listy wszystkich zainstalowanych pakietów języka Python.

Aby uzyskać więcej informacji na temat lokalizacji pakietu i ścieżek instalacji, zobacz Pobieranie informacji o pakiecie języka Python.

Uwaga / Notatka

Użyj pakietu sqlmlutils opisanego w tym artykule, aby dodać pakiety Python do SQL Server 2019 lub nowszych. Aby zapoznać się z programem SQL Server 2017 i jego wcześniejszymi wersjami, zobacz Instalowanie pakietów przy użyciu narzędzi języka Python.

Wymagania wstępne

  • Python zainstalowany na komputerze klienckim, którego używasz do łączenia z SQL Server. Możesz uruchamiać skrypty z linii poleceń lub korzystać ze środowiska programistycznego Python, takiego jak Visual Studio Code z rozszerzeniem Python.

    Wersja Python na komputerze klienckim musi odpowiadać wersji Python na serwerze, a pakiety, które instalujesz, muszą być kompatybilne z wersją Python, którą posiadasz. Aby uzyskać informacje na temat wersji języka Python dołączonej do każdej wersji programu SQL Server, zobacz Wersje języka Python i języka R.

    Aby sprawdzić wersję języka Python w konkretnym wystąpieniu programu SQL Server, użyj następującego polecenia języka T-SQL.

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    
  • Rozszerzenie MSSQL dla programu Visual Studio Code zainstalowane na komputerze klienckim, którego używasz do łączenia się z programem SQL Server. Możesz użyć innych narzędzi do zarządzania bazami danych lub zapytań.

Inne uwagi

  • Biblioteka pakietów Python znajduje się w folderze Program Files w instancji SQL Server. Domyślnie instalacja w tym folderze wymaga uprawnień administratora. Aby uzyskać więcej informacji, zobacz Lokalizacja biblioteki pakietów.

  • Instalacja pakietu jest specyficzna dla instancji SQL, bazy danych i użytkownika, które określasz w informacji o połączeniu podanej do sqlmlutils. Aby używać pakietu w wielu instancjach SQL lub bazach danych, albo dla różnych użytkowników, zainstaluj pakiet dla każdego z nich. Wyjątkiem jest pakiet zainstalowany w zakresie publicznym , który jest współdzielony wszystkim użytkownikom. sqlmlutils domyślnie wybiera zakres publiczny tylko wtedy, gdy łączysz się jako członek sysadmin roli serwera, a w przeciwnym razie zakres prywatny. Aby zainstalować w publicznym zakresie jako inny principal, należy przepuścić scope=sqlmlutils.Scope.public_scope() do install, co wymaga roli bazy db_owner danych. Jeśli użytkownik zainstaluje nowszą wersję publicznego pakietu, publiczny pakiet nie jest dotknięty, ale ten użytkownik ma dostęp do nowszej wersji.

  • Przed dodaniem pakietu zastanów się, czy pakiet jest odpowiedni dla środowiska programu SQL Server.

    • Używaj Python w bazie danych do zadań, które korzystają z ścisłej integracji z silnikiem bazy danych, takich jak uczenie maszynowe, zamiast do zadań polegających wyłącznie na zapytaniach do bazy danych.

    • Jeśli dodasz pakiety, które wywierają zbyt dużą presję obliczeniową na serwerze, wydajność na tym cierpi.

    • W utwardzonym środowisku SQL Server unikaj następujących typów pakietów:

      • Pakiety wymagające dostępu do sieci
      • Pakiety wymagające podwyższonego poziomu dostępu do systemu plików
      • Pakiety używane do tworzenia aplikacji internetowych lub innych zadań, które nie korzystają z działania wewnątrz programu SQL Server
    • Nie da się zainstalować pakietu tensorflow w Python z sqlmlutils. Aby uzyskać więcej informacji i obejść ten problem, zobacz Znane problemy w usługach SQL Server Machine Learning Services.

Instalowanie narzędzia sqlmlutils na komputerze klienckim

Aby użyć narzędzia sqlmlutils, należy najpierw zainstalować go na komputerze klienckim używanym do nawiązywania połączenia z programem SQL Server.

Instalowanie narzędzia sqlmlutils w trybie online

Jeśli komputer kliencki ma dostęp do internetu, zainstaluj sqlmlutils za pomocą pip:

pip install sqlmlutils

Instalowanie narzędzia sqlmlutils w trybie offline

Jeśli komputer kliencki nie ma dostępu do internetu, zainstaluj sqlmlutils z pobranego pliku:

  1. Upewnij się, że masz zainstalowany PIP . Więcej informacji można znaleźć w artykule instalacja PIP.

  2. Pobierz najnowszy plik sqlmlutils ze strony wydań sqlmlutils na komputer kliencki. Nie rozpakuj pliku.

  3. Otwórz wiersz poleceń i wykonaj następujące polecenie, aby zainstalować pakiet sqlmlutils. Zamień pełną ścieżkę do pobranego pliku. Ten przykład zakłada, że pobrany plik to .c:\temp\sqlmlutils-1.0.0.zip

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

Dodawanie pakietu języka Python w programie SQL Server

Korzystając z sqlmlutils, możesz dodawać pakiety Python do instancji SQL i używać ich w kodzie Python, który działa w tej instancji. sqlmlutils używa CREATE EXTERNAL LIBRARY do instalowania pakietu i wszystkich jego zależności.

Poniższy przykład dodaje pakiet tekst-tools do SQL Server.

Dodawanie pakietu w trybie online

Jeśli komputer kliencki, którego używasz do połączenia z SQL Server, ma dostęp do internetu, możesz użyć sqlmlutils, aby znaleźć pakiet text-tools i wszelkie zależności online, a następnie zainstalować pakiet na instancji SQL Server zdalnie.

  1. Na komputerze klienckim otwórz środowisko Python lub Python.

  2. Użyj następujących poleceń, aby zainstalować pakiet narzędzi tekstowych . Zastąp informacje o połączeniu z bazą danych SQL Server własnymi danymi (jeśli używasz uwierzytelniania systemu Windows, nie potrzebujesz parametrów uid i pwd).

  1. Na komputerze klienckim otwórz środowisko Python lub Python.

  2. Użyj następujących poleceń, aby zainstalować pakiet narzędzi tekstowych . Zastąp własne informacje o połączeniu z bazą danych programu SQL Server. Również należy podać nazwę sterownika ODBC zainstalowanego na komputerze klienckim, na przykład , driver="ODBC Driver 18 for SQL Server"ponieważ nazwa sterownika, której używa sqlmlutils, domyślnie dotyczy tylko systemu Windows.

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

Dodawanie pakietu w trybie offline

Jeśli komputer kliencki, którego używasz do połączenia z SQL Server, nie ma połączenia internetowego, użyj pip na komputerze, który ma, aby pobrać pakiet do lokalnego folderu. Następnie kopiujesz folder na komputer kliencki i instalujesz pakiet offline.

Uwaga / Notatka

Ta procedura działa dla pakietu, który nie ma zależności. SQLPackageManager.install() rozpoznaje zależności z PyPI nawet wtedy, gdy podasz lokalny plik .whl, więc aby dodać pakiet, który ma zależności, użyj komputera klienckiego z dostępem do internetu i postępuj zgodnie z instrukcjami w sekcji Add the package online.

Na komputerze z dostępem do internetu

  1. Otwórz Command Prompt i uruchom następujące polecenie, aby utworzyć lokalny folder zawierający pakiet text-tools. W tym przykładzie zostanie utworzony folder c:\temp\text-tools.

    pip download text-tools -d c:\temp\text-tools
    
  2. text-tools Skopiuj folder na komputer kliencki. W poniższym przykładzie przyjęto założenie, że skopiowano go do elementu c:\temp\packages\text-tools.

Na komputerze klienckim

Użyj sqlmlutils , aby zainstalować pakiet (.whl plik), który pip pobrał do lokalnego folderu.

W tym przykładzie narzędzia tekstowe nie mają zależności od nich, więc text-tools folder zawiera pojedynczy plik.

Uruchom następujący skrypt języka Python. Zastąp rzeczywistą ścieżkę pliku i nazwę pakietu oraz informacje o połączeniu z bazą danych programu SQL Server (jeśli używasz uwierzytelniania systemu Windows, nie potrzebujesz parametrów uid i pwd).

Uruchom następujący skrypt języka Python. Zastąp rzeczywistą ścieżkę pliku i nazwę pakietu oraz informacje o połączeniu z bazą danych programu SQL Server. Również należy podać nazwę sterownika ODBC zainstalowanego na komputerze klienckim, na przykład , driver="ODBC Driver 18 for SQL Server"ponieważ nazwa sterownika, której używa sqlmlutils, domyślnie dotyczy tylko systemu 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")

Korzystanie z pakietu

Teraz możesz użyć pakietu w skrypcie języka Python na serwerze SQL Server. Przykład:

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

Usuwanie pakietu z programu SQL Server

Aby usunąć pakiet text-tools, uruchom następujące polecenie Python na komputerze klienckim, używając tej samej zmiennej połączenia, którą zdefiniowałeś wcześniej.

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

Więcej funkcji sqlmlutils

Pakiet sqlmlutils zawiera kilka funkcji do zarządzania pakietami Python oraz do tworzenia, zarządzania i uruchamiania procedur i zapytań przechowywanych w SQL Server. Więcej informacji znajdziesz w pliku sqlmlutils Python README.

Aby uzyskać informacje o dowolnej funkcji sqlmlutils , użyj funkcji pomocy języka Python. Przykład:

import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)