在本快速入門中,您會將 Python 腳本連線到您已使用範例數據建立和載入的資料庫。 您可以使用適用於 Python 的 pymssql
驅動程式來連線到資料庫並執行基本作業,例如讀取和寫入數據。
pymssql 檔 | pymssql 原始程式碼 | 套件 (PyPi)
先決條件
Python 3
如果您還沒有 Python,請從 python.org 安裝 Python 運行時間和Python 套件索引 (PyPI) 套件管理員。
您不想使用您自己的環境嗎? 使用 GitHub Codespaces 以 devcontainer 身分開啟。
pymssql
來自 PyPI 的套件。SQL Server、Azure SQL Database 或 Fabric 環境中的 SQL 資料庫中具有範例架構和有效連接字串的資料庫。
設定
請遵循下列步驟來設定開發環境,以使用 pymssql
Python 驅動程式開發應用程式。
備註
此驅動程式會使用 TDS 通訊協議,預設會在 SQL Server、Fabric 中的 SQL Database 和 Azure SQL Database 中啟用。 不需要額外的設定。
安裝 pymssql 套件
從 PyPI 取得pymssql
套件。
在空的目錄中開啟命令提示字元。
安裝
pymssql
套件。pip install pymssql
確認已安裝的套件
您可以使用 PyPI 命令列工具來確認您預期的套件是否已安裝。
使用
pip list
檢查已安裝的套件清單。pip list
建立 SQL 資料庫
本快速入門需要 AdventureWorks2022 Lightweight 架構,Microsoft SQL Server、Fabric 中的 SQL 資料庫或 Azure SQL Database。
執行程式碼
建立新的 檔案
建立名為
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 資料庫類型。 如需連接字串及其語法的詳細資訊,請參閱 連接字串語法參考。
執行查詢
使用 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 存放庫,以參與想法或報告問題。