共用方式為


快速入門:從 Jupyter Notebook 連線到 SQL 資料庫

在本快速開始中,您會在 Visual Studio Code 中使用 Jupyter Notebook 來快速獲得商業洞察。 您可以使用 mssql-python Python 驅動程式連接到 SQL 資料庫 並讀取數據,然後格式化為用於電子郵件、報告簡報等。

在 Windows 電腦上,mssql-python 驅動程式不需要任何外部相依性。 驅動程式會透過單一 pip 安裝來安裝所需的所有內容,讓您可以將最新版本的驅動程式用於新腳本,而不會中斷您沒有時間升級和測試的其他腳本。

mssql-python 文件 | mssql-python 原始程式碼 | 套件 (PyPi) | Visual Studio 程式碼

先決條件


建立 SQL 資料庫

此快速入門需使用 AdventureWorks2025 輕量級 架構,支援 Microsoft SQL Server、Fabric 中的 SQL 資料庫或 Azure SQL 資料庫。

建立專案並執行程式碼

建立新專案

  1. 在開發目錄中開啟命令提示字元。 如果您沒有,請建立一個名為 、 python等的新scripts目錄。避免在 OneDrive 上放置資料夾,同步可能會幹擾虛擬環境的管理。

  2. 建立新的專案 使用uv

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

新增依賴性

在相同的目錄中,安裝 mssql-python、 、 python-dotenvrichpandasmatplotlib 套件。 然後新增 ipykerneluv 作為開發相依性。 VS Code 需要新增ipykerneluv,才能從筆記本儲存格中透過命令如uv!uv add mssql_python進行互動。

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 資料庫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. 使用筆記本頂端的 [+ Markdown ] 按鈕來新增 Markdown 儲存格。

  5. 將下列文字新增至新的 Markdown 儲存格。

    ## Define queries for use later
    
  6. 選取儲存格工具列中的 核取記號 ,或使用鍵盤快速鍵 Ctrl+EnterShift+Enter 轉譯 Markdown 儲存格。

  7. 使用筆記本頂端的 [+ 代碼 ] 按鈕來新增程式碼儲存格。

  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. 使用筆記本頂端的 [+ Markdown ] 按鈕來新增 Markdown 儲存格。

  2. 將下列文字新增至新的 Markdown 儲存格。

    ## Print orders by customer and display in a table
    
  3. 選取儲存格工具列中的 核取記號 ,或使用鍵盤快速鍵 Ctrl+EnterShift+Enter 轉譯 Markdown 儲存格。

  4. 使用筆記本頂端的 [+ 代碼 ] 按鈕來新增程式碼儲存格。

  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 驗證,您必須透過 Visual Studio Code 中的 Azure Repos 延伸模組登入,或透過 az login 執行

  6. 使用筆記本頂端的 [全部執行] 按鈕來執行筆記本。

  7. 出現提示時,選取 jupyter-notebook-qs 核心。

在圖表中顯示結果

  1. 檢閱最後一個儲存格的輸出。 您應該會看到一個包含三欄和五列的表格。

  2. 使用筆記本頂端的 [+ Markdown ] 按鈕來新增 Markdown 儲存格。

  3. 將下列文字新增至新的 Markdown 儲存格。

    ## Display spend by category in a horizontal bar chart
    
  4. 選取儲存格工具列中的 核取記號 ,或使用鍵盤快速鍵 Ctrl+EnterShift+Enter 轉譯 Markdown 儲存格。

  5. 使用筆記本頂端的 [+ 代碼 ] 按鈕來新增程式碼儲存格。

  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 存放庫以取得更多範例,以提供想法或報告問題。