다음을 통해 공유


빠른 시작: Jupyter Notebook에서 Fabric의 SQL 데이터베이스에 연결

이 빠른 시작에서는 Visual Studio Code의 Jupyter Notebook을 사용하여 비즈니스 인사이트를 신속하게 파생합니다. Python용 드라이버를 사용하여 mssql-pythonFabric의 SQL 데이터베이스에 연결한 다음 전자 메일, 보고서 프레젠테이션 등에 사용할 수 있도록 형식이 지정된 데이터를 읽습니다.

드라이버에는 mssql-python Windows 컴퓨터에 대한 외부 종속성이 필요하지 않습니다. 드라이버는 단일 pip 설치로 필요한 모든 것을 설치하므로 업그레이드 및 테스트할 시간이 없는 다른 스크립트를 중단하지 않고도 새 스크립트에 최신 버전의 드라이버를 사용할 수 있습니다.

mssql-python 설명서 | mssql-python 소스 코드 | 패키지(PyPi) | Visual Studio Code

필수 조건


프로젝트 만들기 및 코드 실행

새 프로젝트 만들기

  1. 개발 디렉터리에서 명령 프롬프트를 엽니다. 디렉터리가 없으면, python, scripts 등으로 새 디렉터리를 만드세요. OneDrive에는 폴더를 생성하지 마십시오. 동기화가 가상 환경 관리에 영향을 미칠 수 있습니다.

  2. 를 사용하여 새 프로젝트를 만듭니다 uv.

    uv init jupyter-notebook-qs
    cd jupyter-notebook-qs
    

종속성 추가

동일한 디렉터리에 , mssql-python, python-dotenvrichpandas 패키지를 설치matplotlib합니다. 그런 다음 개발 종속성을 추가하고 ipykerneluv 추가합니다. VS Code는 Notebook 셀 내에서 ipykernel와 같은 명령을 사용하여 상호 작용할 수 있으려면 uvuv가 추가되어야 합니다.

uv add mssql_python dotenv rich pandas matplotlib
uv add --dev ipykernel
uv add --dev uv

Visual Studio Code 시작

동일한 디렉터리에서 다음 명령을 실행합니다.

code .

pyproject.toml 업데이트

  1. pyproject.toml에는 프로젝트에 대한 메타데이터가 포함됩니다.

  2. 설명을 더 자세히 설명하도록 업데이트합니다.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. 파일을 저장 후 닫습니다.

연결 문자열 저장

  1. .gitignore 파일을 열고 .env 파일에 대한 제외를 추가합니다. 파일은 이 예제와 유사해야 합니다. 완료되면 저장하고 닫아야 합니다.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. 현재 디렉터리에서 새 파일을 만듭니다 .env.

  3. .env 파일 내부에서 SQL_CONNECTION_STRING이라는 이름의 연결 문자열 항목을 추가합니다. 여기서 예제를 실제 연결 문자열 값으로 바꿉다.

    SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryDefault"
    

    팁 (조언)

    Fabric의 SQL 데이터베이스의 경우 DRIVER 정보 없이 연결 문자열 탭의 ODBC 연결 문자열을 사용합니다.

Jupyter Notebook 만들기

  1. 목록에서 파일, 새 파일Jupyter Notebook을 선택합니다. 새 전자 필기장이 열립니다.

  2. 파일을 선택한 다음 다른 이름으로 저장하고 새 전자 필기장 이름을 지정합니다.

  3. 첫 번째 셀에 다음 가져오기를 추가합니다.

    from os import getenv
    from mssql_python import connect
    from dotenv import load_dotenv
    from rich.console import Console
    from rich.table import Table
    import pandas as pd
    import matplotlib.pyplot as plt
    
  4. Notebook 맨 위에 있는 + Markdown 단추를 사용하여 새 markdown 셀을 추가합니다.

  5. 새 markdown 셀에 다음 텍스트를 추가합니다.

    ## Define queries for use later
    
  6. 셀 도구 모음에서 확인 표시를 선택하거나 Ctrl+Enter 또는 Shift+Enter 바로 가기 키를 사용하여 markdown 셀을 렌더링합니다.

  7. Notebook 맨 위에 있는 + 코드 단추를 사용하여 새 코드 셀을 추가합니다.

  8. 새 코드 셀에 다음 코드를 추가합니다.

    SQL_QUERY_ORDERS_BY_CUSTOMER = """
    SELECT TOP 5
    c.CustomerID,
    c.CompanyName,
    COUNT(soh.SalesOrderID) AS OrderCount
    FROM
    SalesLT.Customer AS c
    LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh
    ON c.CustomerID = soh.CustomerID
    GROUP BY
    c.CustomerID,
    c.CompanyName
    ORDER BY
    OrderCount DESC;
    """
    
    SQL_QUERY_SPEND_BY_CATEGORY = """
    select top 10
    pc.Name as ProductCategory,
    SUM(sod.OrderQty * sod.UnitPrice) as Spend
    from SalesLT.SalesOrderDetail sod 
    inner join SalesLT.SalesOrderHeader soh on sod.salesorderid = soh.salesorderid 
    inner join SalesLT.Product p on sod.productid = p.productid 
    inner join SalesLT.ProductCategory pc on p.ProductCategoryID = pc.ProductCategoryID 
    GROUP BY pc.Name 
    ORDER BY Spend;
    """
    

테이블에 결과 표시

  1. Notebook 맨 위에 있는 + Markdown 단추를 사용하여 새 markdown 셀을 추가합니다.

  2. 새 markdown 셀에 다음 텍스트를 추가합니다.

    ## Print orders by customer and display in a table
    
  3. 셀 도구 모음에서 확인 표시를 선택하거나 Ctrl+Enter 또는 Shift+Enter 바로 가기 키를 사용하여 markdown 셀을 렌더링합니다.

  4. Notebook 맨 위에 있는 + 코드 단추를 사용하여 새 코드 셀을 추가합니다.

  5. 새 코드 셀에 다음 코드를 추가합니다.

    load_dotenv()
    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        with conn.cursor() as cursor:
            cursor.execute(SQL_QUERY_ORDERS_BY_CUSTOMER)
            if cursor:
                table = Table(title="Orders by Customer")
                # https://rich.readthedocs.io/en/stable/appendix/colors.html
                table.add_column("Customer ID", style="bright_blue", justify="center")
                table.add_column("Company Name", style="bright_white", justify="left")
                table.add_column("Order Count", style="bold green", justify="right")
    
                records = cursor.fetchall()
    
                for r in records:
                    table.add_row(f"{r.CustomerID}",
                                    f"{r.CompanyName}", f"{r.OrderCount}")
    
                Console().print(table)
    

팁 (조언)

macOS에서는 Microsoft Entra 인증을 위해 ActiveDirectoryInteractiveActiveDirectoryDefault가 모두 작동합니다. ActiveDirectoryInteractive 는 스크립트를 실행할 때마다 로그인하라는 메시지를 표시합니다. 반복되는 로그인 프롬프트를 방지하려면 Azure CLI를 통해 한 번 로그인하고 ActiveDirectoryDefault를 사용하여 캐시된 자격 증명을 재사용하십시오.

  1. Notebook 맨 위에 있는 모두 실행 단추를 사용하여 Notebook을 실행합니다.

  2. 메시지가 표시되면 jupyter-notebook-qs 커널을 선택합니다.

차트에 결과 표시

  1. 마지막 셀의 출력을 검토합니다. 세 개의 열과 5개의 행이 있는 테이블이 표시됩니다.

  2. Notebook 맨 위에 있는 + Markdown 단추를 사용하여 새 markdown 셀을 추가합니다.

  3. 새 markdown 셀에 다음 텍스트를 추가합니다.

    ## Display spend by category in a horizontal bar chart
    
  4. 셀 도구 모음에서 확인 표시를 선택하거나 Ctrl+Enter 또는 Shift+Enter 바로 가기 키를 사용하여 markdown 셀을 렌더링합니다.

  5. Notebook 맨 위에 있는 + 코드 단추를 사용하여 새 코드 셀을 추가합니다.

  6. 새 코드 셀에 다음 코드를 추가합니다.

    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        data = pd.read_sql_query(SQL_QUERY_SPEND_BY_CATEGORY, conn)
        # Set the style - use print(plt.style.available) to see all options
        plt.style.use('seaborn-v0_8-notebook')
        plt.barh(data['ProductCategory'], data['Spend'])
    
  7. 셀 실행 단추를 사용하거나 Ctrl+Alt+Enter 셀을 실행합니다.

  8. 결과를 검토합니다. 이 전자 필기장을 직접 만드십시오.

다음 단계

더 많은 예제를 mssql-python 보려면 드라이버 GitHub 리포지토리를 방문하여 아이디어를 기여하거나 문제를 보고하세요.