在本快速入門中,您會將 Python 腳本連線到您使用範例數據建立和載入的資料庫。 您可以使用適用於 Python 的 mssql-python 驅動程式來連線到資料庫並執行基本作業,例如讀取和寫入數據。
在 Windows 電腦上,mssql-python 驅動程式不需要任何外部相依性。 驅動程式會透過單一 pip 安裝來安裝所需的所有內容,讓您可以將最新版本的驅動程式用於新腳本,而不會中斷您沒有時間升級和測試的其他腳本。
本文中的本地 SQL 驗證範例僅用於針對你控制的 SQL Server 實例進行本地開發。 對於 Azure SQL Database、Fabric 中的 SQL 資料庫、共享開發環境、CI 及生產部署,請先使用 Microsoft Entra 認證或其他無密碼流程。
MSSQL-Python 文件 | MSSQL-Python 原始碼 | 套件(PyPI) | Visual Studio 程式碼
先決條件
Python 3.10 或更新版本
如果你還沒有 Python,建議安裝 Python 執行環境 和 Pip 套件管理器 ,從 python.org 安裝。
不想使用自己的系統環境? 遵循容器與本地開發,建立可重現的開發容器或 GitHub Codespaces 環境。
在 SQL Server、Azure SQL Database 或 Fabric 中的 SQL 資料庫中建立或連接資料庫。 請依照以下步驟建立包含範例結構的AdventureWorks2025資料庫,並保留 連接字串 以備後用。
建立 SQL 資料庫
在以下平台建立或連接 SQL 資料庫:
設定
請遵循下列步驟來設定開發環境,以使用 mssql-python Python 驅動程式開發應用程式。
備註
此驅動程式採用 表格資料串流(TDS) 協定。 SQL Server、Fabric 中的 SQL 資料庫和 Azure SQL Database 預設啟用 TDS,因此不需要額外設定。
安裝 mssql-python 套件
從 PyPI 取得mssql-python 套件。
在空的目錄中開啟命令提示字元。
安裝
mssql-python套件。pip install mssql-python
安裝 python-dotenv 套件
從 PyPI 取得 python-dotenv 套件。
在相同的目錄中,安裝
python-dotenv套件。pip install python-dotenv
確認已安裝的套件
您可以使用 PyPI 命令列工具來確認您預期的套件是否已安裝。
使用
pip list檢查已安裝的套件清單。pip list
執行程式碼
建立新的 檔案
建立名為
app.py的新檔案。新增模組 docstring。
""" Connects to a SQL database using mssql-python """匯入套件,包括
mssql-python。from os import getenv from dotenv import load_dotenv from mssql_python import connect使用函式
mssql-python.connect連線到 SQL 資料庫。load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))在目前目錄中,建立名為
.env的新檔案。在
.env檔案中,新增一個名為SQL_CONNECTION_STRING的連接字串項目。 請使用以下範例之一,並將佔位符替換成你的實際數值。對於 Azure SQL Database 或 Fabric 中的 SQL 資料庫,請先使用 Microsoft Entra 認證:
SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"在開發過程中,本地 SQL Server 請先從 SQL 認證開始:
SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"Caution
請將
.env視為本機開發時的方便做法,而非部署機制。 切勿提交憑證,切勿在共享或生產環境中重複使用此SQL認證範例,且憑證驗證在本地開發外保持啟用。使用 Connection 字串 來調整範例以符合命名實例、容器或進階設定。 如果你是在 Fabric 裡連接 Azure SQL Database 或 SQL 資料庫,請使用 Microsoft Entra 認證,提供無密碼且互動式的登入選項。 關於更廣泛的秘密與憑證指引,請參見 安全最佳實務。
執行查詢
使用 SQL 查詢字串來執行查詢並剖析結果。
建立 SQL 查詢字串的變數。
SQL_QUERY = """ 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; """使用
cursor.execute從資料庫的查詢中擷取結果集。cursor = conn.cursor() cursor.execute(SQL_QUERY)備註
這個函式基本上接受任何查詢並回傳結果集。 要遍歷結果集,請使用 cursor.fetchone()。
使用
cursor.fetchall搭配for迴圈,從資料庫取得所有記錄。 然後,列印紀錄。records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")儲存
app.py檔案。小提示
在 macOS 上,兩者都
ActiveDirectoryInteractiveActiveDirectoryDefault適用於 Microsoft Entra 認證。ActiveDirectoryInteractive每次執行腳本時都會提示你登入。 為避免重複登入提示,請透過 Azure CLI 執行az login,然後使用ActiveDirectoryDefault,重複使用快取的憑證。開啟終端機並測試應用程式。
python app.py以下是預期的輸出。
29485 1 Professional Sales and Service 29531 1 Remarkable Bike Store 29546 1 Bulk Discount Store 29568 1 Coalition Bike Company 29584 1 Futuristic Bikes
將數據列插入為交易
安全執行一個 INSERT 語句並傳遞參數。 將參數當做值傳遞,可保護您的應用程式免於 遭受SQL 插入 式攻擊。
將
randrange從random庫匯入並添加到app.py的最上方。from random import randrange在
app.py結尾新增程式碼,以產生隨機的產品編號。productNumber = randrange(1000)小提示
在這裡產生隨機的產品名稱可確保您可以多次執行此範例。
建立 SQL 語句字串。
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (%(name)s, %(product_number)s, %(standard_cost)s, %(list_price)s, CURRENT_TIMESTAMP) """使用
cursor.execute執行該語句。cursor.execute( SQL_STATEMENT, { 'name': f'Example Product {productNumber}', 'product_number': f'EXAMPLE-{productNumber}', 'standard_cost': 100, 'list_price': 200 } )使用
cursor.fetchone擷取單一結果,打印該結果的唯一標識符,然後使用connection.commit將操作提交為交易。result = cursor.fetchone() print(f"Inserted Product ID : {result.ProductID}") conn.commit()小提示
您可以選擇性地使用
connection.rollback來回復交易。使用
cursor.close和connection.close關閉游標和連接。cursor.close() conn.close()儲存
app.py檔案並再次測試應用程式。python app.py以下是預期的輸出。
Inserted Product ID : 1001
下一步
善用這些文章持續學習: