다음을 통해 공유


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

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

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

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

필수 조건


SQL 데이터베이스 만들기

이 빠른 시작에서는 Microsoft SQL Server의 AdventureWorks2025 경량 스키마, 패브릭의 SQL 데이터베이스 또는 Azure SQL Database가 필요합니다.

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

새 프로젝트 만들기

  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=ActiveDirectoryInteractive"
    

    팁 (조언)

    여기서 사용되는 연결 문자열은 연결하려는 SQL 데이터베이스의 유형에 따라 크게 달라집니다. Azure SQL Database 또는 Fabric의 SQL 데이터베이스에 연결하는 경우 연결 문자열 탭에서 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 Authentication을 사용하려면 Visual Studio Code의 Azure Repos 확장을 통해 또는 az login를 통해 실행 하여 로그인해야 합니다.

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

  7. 메시지가 표시되면 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 리포지토리를 방문하여 아이디어를 기여하거나 문제를 보고하세요.