sqlmlutils를 사용하여 Python 패키지 설치

적용 대상: SQL Server 2019(15.x) Azure SQL Managed Instance

이 문서에서는 sqlmlutils 패키지의 함수를 사용하여 SQL Server Machine Learning Services빅 데이터 클러스터 인스턴스에 새 Python 패키지를 설치하는 방법을 설명합니다. 설치한 패키지는 sp_execute_external_script T-SQL 문을 사용하여 데이터베이스 내에서 실행되는 Python 스크립트에서 사용할 수 있습니다.

이 문서에서는 sqlmlutils 패키지의 함수를 사용하여 Azure SQL Managed Instance Machine Learning Services 인스턴스에 새 Python 패키지를 설치하는 방법을 설명합니다. 설치한 패키지는 sp_execute_external_script T-SQL 문을 사용하여 데이터베이스 내에서 실행되는 Python 스크립트에서 사용할 수 있습니다.

참고

SQL Managed Instance Machine Learning Services의 인스턴스에 미리 설치된 패키지는 업데이트하거나 제거할 수 없습니다. 현재 설치된 패키지의 목록을 보려면 설치된 모든 Python 패키지 나열을 참조하세요.

패키지 위치 및 설치 경로에 대한 자세한 내용은 Python 패키지 정보 가져오기를 참조하세요.

참고

이 문서에서 설명하는 sqlmlutils 패키지는 SQL Server 2019 이상에 Python 패키지를 추가하는 데 사용됩니다. SQL Server 2017 이전 버전의 경우 Python 도구를 사용하여 패키지 설치를 참조하세요.

사전 요구 사항

  • SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터에 Azure Data Studio를 설치합니다. 다른 데이터베이스 관리 또는 쿼리 도구를 사용할 수 있지만, 이 문서에서는 Azure Data Studio를 사용한다고 가정합니다.

  • Azure Data Studio에서 Python 커널을 설치합니다. 또한 명령줄에서 Python을 설치하고 사용할 수 있으며 Visual Studio Code와 같은 대체 Python 개발 환경을 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)
    '
    

기타 고려 사항

  • Python 패키지 라이브러리는 SQL Server 인스턴스의 Program Files 폴더에 있으며, 기본적으로 이 폴더에 설치하려면 관리자 권한이 필요합니다. 자세한 내용은 패키지 라이브러리 위치를 참조하세요.

  • 패키지 설치는 sqlmlutils에 제공하는 연결 정보를 통해 지정한 SQL 인스턴스, 데이터베이스 및 사용자에게 적용됩니다. 패키지를 여러 SQL 인스턴스 또는 데이터베이스에서 사용하거나 여러 사용자가 사용하도록 하려면 각각에 대해 패키지를 설치해야 합니다. 단, 패키지를 dbo의 멤버가 설치하는 경우 패키지는 공용이며 모든 사용자와 공유됩니다. 사용자가 새 버전의 공용 패키지를 설치하는 경우 공용 패키지는 영향을 받지 않지만 해당 사용자는 새 버전에 액세스할 수 있습니다.

  • 패키지를 추가하기 전에 해당 패키지가 SQL Server 환경에 적합한지 여부를 고려합니다.

    • 데이터베이스를 단순히 쿼리하는 작업이 아니라, 기계 학습과 같은 데이터베이스 엔진과의 긴밀한 통합을 활용하는 태스크에는 데이터베이스 내에서 Python을 사용하는 것이 좋습니다.

    • 서버에 너무 많은 컴퓨팅 부하를 발생하는 패키지를 추가하는 경우 성능이 저하됩니다.

    • 강화된 SQL Server 환경에서는 다음을 방지해야 할 수 있습니다.

      • 네트워크 액세스가 필요한 패키지
      • 상승된 파일 시스템 액세스 권한이 필요한 패키지
      • 웹 개발 또는 SQL Server 내에서 실행해도 장점이 없는 기타 태스크에 사용되는 패키지
    • sqlmlutils를 사용하여 Python 패키지 tensorflow를 설치할 수 없습니다. 자세한 내용 및 해결 방법은 SQL Server Machine Learning Services의 알려진 문제를 참조하세요.

클라이언트 컴퓨터에 sqlmlutils 설치

sqlmlutils를 사용하려면 먼저 SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터에 설치해야 합니다.

Azure Data Studio에서

Azure Data Studio에서 sqlmlutils를 사용하는 경우 Python 커널 Notebook의 패키지 관리 기능을 사용하여 설치할 수 있습니다.

  1. Azure Data Studio의 Python 커널 Notebook에서 패키지 관리를 클릭합니다.
  2. 새로 추가를 클릭합니다.
  3. Pip 패키지 검색 필드에 "sqlmlutils"를 입력하고 검색을 클릭합니다.
  4. 설치할 패키지 버전을 선택합니다(최신 버전 권장).
  5. 설치를 클릭한 다음 닫기를 클릭합니다.

Python 명령줄에서

Python 명령 프롬프트 또는 IDE에서 sqlmlutils를 사용하는 경우 간단한 pip 명령을 사용하여 sqlmlutils를 설치할 수 있습니다.

pip install sqlmlutils

Zip 파일에서 sqlmlutils를 설치할 수도 있습니다.

  1. pip이 설치되어 있는지 확인합니다. 자세한 내용은 pip 설치를 참조하세요.
  2. 최신 sqlmlutils zip 파일을 https://github.com/microsoft/sqlmlutils/tree/master/R/dist 에서 클라이언트 컴퓨터로 다운로드합니다. 파일 압축을 풀지 마세요.
  3. 명령 프롬프트를 열고 다음 명령을 실행하여 sqlmlutils 패키지를 설치합니다. 다운로드한 sqlmlutils zip 파일의 전체 경로를 대체합니다. 이 예제에서는 다운로드한 파일을 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를 사용하여 SQL 인스턴스에 Python 패키지를 추가할 수 있습니다. 그런 다음 SQL 인스턴스에서 실행되는 Python 코드에서 해당 패키지를 사용할 수 있습니다. sqlmlutilsCREATE EXTERNAL LIBRARY를 사용하여 패키지 및 해당 종속성을 설치합니다.

다음 예제에서는 SQL Server에 text-tools 패키지를 추가합니다.

온라인으로 패키지 추가

SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터가 인터넷에 연결되어 있는 경우 sqlmlutils를 사용하여 인터넷을 통해 text-tools 패키지와 종속성을 찾은 다음, 원격으로 SQL Server 인스턴스에 패키지를 설치할 수 있습니다.

  1. 클라이언트 컴퓨터에서 Python 또는 Python 환경을 엽니다.

  2. 다음 명령을 사용하여 text-tools 패키지를 설치합니다. 사용자 고유의 SQL Server 데이터베이스 연결 정보로 대체합니다(Windows 인증을 사용하는 경우에는 uidpwd 매개 변수 필요 없음).

  1. 클라이언트 컴퓨터에서 Python 또는 Python 환경을 엽니다.

  2. 다음 명령을 사용하여 text-tools 패키지를 설치합니다. 사용자의 SQL Server 데이터베이스 연결 정보를 대체합니다.

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

오프라인으로 패키지 추가

SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터가 인터넷에 연결되지 않은 경우 인터넷에 액세스할 수 있는 컴퓨터에서 pip를 사용하여 패키지 및 모든 종속성 패키지를 로컬 폴더에 다운로드할 수 있습니다. 그런 다음, 패키지를 오프라인으로 설치할 수 있는 클라이언트 컴퓨터에 해당 폴더를 복사합니다.

인터넷에 액세스할 수 있는 컴퓨터의 경우

  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 폴더에는 설치할 파일이 1개 뿐입니다. 반면, scikit-plot과 같은 패키지에는 11개의 종속성이 있으므로 폴더에서 12개 파일(scikit-plot 패키지 및 11개의 종속성 패키지)을 찾을 수 있으며 각각을 설치합니다.

다음 Python 스크립트를 실행합니다. 패키지의 실제 파일 경로와 이름, 사용자 고유의 SQL Server 데이터베이스 연결 정보로 대체합니다(Windows 인증을 사용하는 경우에는 uidpwd 매개 변수 필요 없음). 폴더의 각 패키지 파일에 대해 sqlmlutils.SQLPackageManager 문을 반복합니다.

다음 Python 스크립트를 실행합니다. 패키지의 실제 파일 경로와 이름, 사용자 고유의 SQL Server 데이터베이스 연결 정보로 대체합니다. 폴더의 각 패키지 파일에 대해 sqlmlutils.SQLPackageManager 문을 반복합니다.

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 추가 정보 파일을 참조하세요.

sqlmlutils 함수에 관한 정보를 확인하려면 Python help 함수를 사용합니다. 예를 들면 다음과 같습니다.

import sqlmlutils
help(SQLPackageManager.install)

다음 단계