在本快速入門中,您會將 Python 腳本連線到您使用範例數據建立和載入的資料庫。 您可以使用適用於 Python 的 pymssql 驅動程式來連線到資料庫並執行基本作業,例如讀取和寫入數據。
pymssql 檔 | pymssql 原始程式碼 | 套件 (PyPi)
先決條件
蟒蛇3
如果您還沒有 Python,請從 python.org 安裝 Python 運行時間和Python 套件索引 (PyPI) 套件管理員。
您不想使用您自己的環境嗎? 使用 GitHub Codespaces 以 devcontainer 身分開啟。
pymssql來自 PyPI 的套件。SQL Server、Azure SQL Database 或 Fabric 環境中的 SQL 資料庫中具有範例架構和有效連接字串的資料庫。
設定
請遵循下列步驟來設定開發環境,以使用 pymssql Python 驅動程式開發應用程式。
備註
此驅動程式會使用 表格式數據流 (TDS) 通訊協議,預設會在 SQL Server、網狀架構中的 SQL 資料庫和 Azure SQL Database 中啟用。 不需要額外的設定。
安裝 pymssql 套件
從 PyPI 取得pymssql 套件。
在空的目錄中開啟命令提示字元。
安裝
pymssql套件。pip install pymssql
安裝 python-dotenv 套件
從 PyPI 取得python-dotenv。
在相同的目錄中,安裝
python-dotenv套件。pip install python-dotenv
確認已安裝的套件
您可以使用 PyPI 命令列工具來確認您預期的套件是否已安裝。
使用
pip list檢查已安裝的套件清單。pip list
建立 SQL 資料庫
此快速入門需使用 AdventureWorks2025 輕量級 架構,支援 Microsoft SQL Server、Fabric 中的 SQL 資料庫或 Azure SQL 資料庫。
執行程式碼
建立新的 檔案
建立名為
app.py的新檔案。新增模組 docstring。
""" Connects to a SQL database using pymssql """匯入套件,包括
pymssql。from os import getenv from dotenv import load_dotenv from pymssql import connect使用函式
pymssql.connect連線到 SQL 資料庫。load_dotenv() conn = connect(getenv("SQL_SERVER"),getenv("SQL_USER"),getenv("SQL_PASSWORD"),getenv("SQL_DATABASE"))在目前目錄中,建立名為
.env的新檔案。在
.env檔案中,新增名為SQL_SERVER、SQL_USER、SQL_PASSWORD、SQL_DATABASE的連接字串值。 請將佔位符替換為您的實際連接字串值。SQL_SERVER="<server_name>" SQL_USER="<sql_user_name>" SQL_PASSWORD="<sql_user_password>" SQL_DATABASE="<sql_database>"小提示
這裡使用的連接字串在很大程度上取決於您所連線的 SQL 資料庫類型。 如需連接字串及其語法的詳細資訊,請參閱 FreeTDS連線屬性。
執行查詢
使用 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(as_dict=True) cursor.execute(SQL_QUERY)備註
此函式基本上會接受任何查詢並傳回結果集,其可以使用 cursor.fetchone() 來逐一查看。
foreach使用迴圈從資料庫取得所有記錄。 然後列印記錄。for r in cursor: print(f"{r['CustomerID']}\t{r['OrderCount']}\t{r['CompanyName']}")儲存
app.py檔案。開啟終端機並測試應用程式。
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 (%s, %s, %s, %s, CURRENT_TIMESTAMP) """使用
cursor.execute執行該語句。cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 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
後續步驟
pymssql如需更多範例,請瀏覽驅動程式 GitHub 存放庫,以參與想法或報告問題。