在這個快速入門中,使用Visual Studio Code中的Jupyter Notebook,快速獲取商業洞察。 使用 mssql-python Python 驅動程式連接 SQL 資料庫,讀取資料,然後格式化以用於電子郵件、報告和簡報。
在 Windows 電腦上,mssql-python 驅動程式不需要任何外部相依性。 驅動程式會透過單一 pip 安裝來安裝所需的所有內容,讓您可以將最新版本的驅動程式用於新腳本,而不會中斷您沒有時間升級和測試的其他腳本。
MSSQL-Python 文件 | MSSQL-Python 原始碼 | 套件(PyPI) | Visual Studio 程式碼
先決條件
Python 3.10 或更新版本
如果你還沒有 Python,建議安裝 Python 執行環境 和 Pip 套件管理器 ,從 python.org 安裝。
不想使用自己的系統環境? 遵循容器與本地開發,建立可重現的開發容器或 GitHub Codespaces 環境。
Visual Studio Code 使用下列擴充套件:
Azure Command-Line 介面(CLI)用於 macOS 和 Linux 的無密碼認證。
如果你還沒有安裝<該軟體>,請依照
安裝說明進行 操作。SQL Server、Azure SQL Database 或 Fabric 中的 SQL 資料庫上的資料庫,具有
AdventureWorks2025範例結構描述和有效的連接字串。安裝一次性作業系統特定先決條件。
建立 SQL 資料庫
在以下平台建立或連接 SQL 資料庫:
建立專案並執行程式碼
建立新專案
在開發目錄中開啟命令提示字元。 如果你沒有,請建立一個新的目錄,例如
python或scripts。 避免在 OneDrive 上放置資料夾,因為同步可能會干擾虛擬環境的管理。建立新的專案 使用
uv。uv init jupyter-notebook-qs cd jupyter-notebook-qs
新增依賴性
在相同的目錄中,安裝 mssql-python、 、 python-dotenvrich、 pandas和 matplotlib 套件。 然後新增 ipykernel 和 uv 作為開發相依性。 VS Code 需要 ipykernel 執行筆記本儲存格,並 uv 從筆記本儲存格內管理套件。
uv add mssql-python python-dotenv rich pandas matplotlib
uv add --dev ipykernel
uv add --dev uv
啟動 Visual Studio Code
在相同的目錄中,執行下列命令。
code .
更新 pyproject.toml
pyproject.toml 包含專案的中繼資料。
更新描述以更具描述性。
description = "A quick example using the mssql-python driver and Jupyter Notebooks."儲存並關閉檔案。
儲存連接字串
開啟
.gitignore檔案,並為.env檔案新增排除項目。 您的檔案應該類似於此範例。 請務必儲存並在完成後將其關閉。# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .env在目前目錄中,建立名為
.env的新檔案。在
.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
選取 [檔案],然後從清單中選取 [ 新增檔案 ] 和 [Jupyter Notebook ]。 新筆記本隨即開啟。
選取 [ 檔案],然後選取 [另存新檔... ],然後為您的新筆記本命名。
在第一個儲存格中新增下列匯入。
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使用筆記本頂端的 [+ Markdown ] 按鈕來新增 Markdown 儲存格。
將下列文字新增至新的 Markdown 儲存格。
## Define queries for use later選取儲存格工具列中的 核取記號 ,或使用鍵盤快速鍵
Ctrl+Enter或Shift+Enter轉譯 Markdown 儲存格。使用筆記本頂端的 [+ 代碼 ] 按鈕來新增程式碼儲存格。
將下列程式碼新增至新的程式碼儲存格。
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; """
在表格中顯示結果
使用筆記本頂端的 [+ Markdown ] 按鈕來新增 Markdown 儲存格。
將下列文字新增至新的 Markdown 儲存格。
## Print orders by customer and display in a table選取儲存格工具列中的 核取記號 ,或使用鍵盤快速鍵
Ctrl+Enter或Shift+Enter轉譯 Markdown 儲存格。使用筆記本頂端的 [+ 代碼 ] 按鈕來新增程式碼儲存格。
將下列程式碼新增至新的程式碼儲存格。
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 上,兩者都
ActiveDirectoryInteractiveActiveDirectoryDefault適用於 Microsoft Entra 認證。ActiveDirectoryInteractive每次執行腳本時都會提示你登入。 為避免重複登入提示,請透過 Azure CLI 執行az login,然後使用ActiveDirectoryDefault,重複使用快取的憑證。使用筆記本頂端的 [全部執行] 按鈕來執行筆記本。
出現提示時,選取 jupyter-notebook-qs 核心。
在圖表中顯示結果
檢閱最後一個儲存格的輸出。 您應該會看到一個包含三欄和五列的表格。
使用筆記本頂端的 [+ Markdown ] 按鈕來新增 Markdown 儲存格。
將下列文字新增至新的 Markdown 儲存格。
## Display spend by category in a horizontal bar chart選取儲存格工具列中的 核取記號 ,或使用鍵盤快速鍵
Ctrl+Enter或Shift+Enter轉譯 Markdown 儲存格。使用筆記本頂端的 [+ 代碼 ] 按鈕來新增程式碼儲存格。
將下列程式碼新增至新的程式碼儲存格。
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'])使用 執行儲存格 按鈕 或
Ctrl+Alt+Enter來執行儲存格。查看結果。 讓這本筆記本成為您自己的筆記本。
下一步
善用這些文章持續學習:
- 建立連線字串 以配置不同 SQL 資料庫類型與認證方法的連線。
- 與 pandas 整合,可直接將查詢結果載入為 DataFrame,以便在筆記本環境中進行分析。
- Arrow 整合,以便使用 Apache Arrow 處理欄式資料,進行高效能分析。