共用方式為


快速入門:使用適用於 Python 的 mssql-python 驅動程式進行連線

在本快速入門中,您會將 Python 腳本連線到您使用範例數據建立和載入的資料庫。 您可以使用適用於 Python 的 mssql-python 驅動程式來連線到資料庫並執行基本作業,例如讀取和寫入數據。

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

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

先決條件

設定

請遵循下列步驟來設定開發環境,以使用 mssql-python Python 驅動程式開發應用程式。

備註

此驅動程式會使用 表格式數據流 (TDS) 通訊協議,預設會在 SQL Server、網狀架構中的 SQL 資料庫和 Azure SQL Database 中啟用。 不需要額外的設定。

安裝 mssql-python 套件

從 PyPI 取得mssql-python 套件

  1. 在空的目錄中開啟命令提示字元。

  2. 安裝 mssql-python 套件。

    pip install mssql-python
    

安裝 python-dotenv 套件

python-dotenv從 PyPI 取得 。

  1. 在相同的目錄中,安裝 python-dotenv 套件。

    pip install python-dotenv
    

確認已安裝的套件

您可以使用 PyPI 命令列工具來確認您預期的套件是否已安裝。

  1. 使用 pip list檢查已安裝的套件清單。

    pip list
    

建立 SQL 資料庫

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

執行程式碼

建立新的 檔案

  1. 建立名為 app.py 的新檔案。

  2. 新增模組 docstring。

    """
    Connects to a SQL database using mssql-python
    """
    
  3. 匯入套件,包括 mssql-python

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. 使用函式 mssql-python.connect 連線到 SQL 資料庫。

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. 在目前目錄中,建立名為 .env的新檔案。

  6. .env 檔案中,新增一個名為 SQL_CONNECTION_STRING 的連接字串項目。 將此範例替換為您的實際連接字串值。

    SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    小提示

    這裡使用的連接字串在很大程度上取決於您所連線的 SQL 資料庫類型。 如果您要連線到 Azure SQL DatabaseFabric 中的 SQL 資料庫,請使用 [連接字串] 索引卷標的 ODBC 連接字串。視您的案例而定,您可能需要調整驗證類型。 如需連接字串及其語法的詳細資訊,請參閱 連接字串語法參考

執行查詢

使用 SQL 查詢字串來執行查詢並剖析結果。

  1. 建立 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;
    """
    
  2. 使用 cursor.execute 從資料庫的查詢中擷取結果集。

    cursor = conn.cursor()
    cursor.execute(SQL_QUERY)
    

    備註

    此函式基本上會接受任何查詢並傳回結果集,其可以使用 cursor.fetchone() 來逐一查看。

  3. 使用 cursor.fetchall 搭配 foreach 迴圈,從資料庫取得所有記錄。 然後列印記錄。

    records = cursor.fetchall()
    for r in records:
      print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")
    
  4. 儲存app.py檔案。

小提示

若要在 macOS 中使用 Microsoft Entra 驗證,您必須透過 az login 執行來登入。

  1. 開啟終端機並測試應用程式。

    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 插入 式攻擊。

  1. randrangerandom 庫匯入並添加到 app.py 的最上方。

    from random import randrange
    
  2. app.py 結尾新增程式碼,以產生隨機的產品編號。

    productNumber = randrange(1000)
    

    小提示

    在這裡產生隨機的產品名稱可確保您可以多次執行此範例。

  3. 建立 SQL 語句字串。

    SQL_STATEMENT = """
    INSERT SalesLT.Product (
    Name,
    ProductNumber,
    StandardCost,
    ListPrice,
    SellStartDate
    ) OUTPUT INSERTED.ProductID
    VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)
    """
    
  4. 使用 cursor.execute 執行該語句。

    cursor.execute(
       SQL_STATEMENT,
       (
          f'Example Product {productNumber}',
          f'EXAMPLE-{productNumber}',
          100,
          200
       )
    )
    
  5. 使用 cursor.fetchone 擷取單一結果,打印該結果的唯一標識符,然後使用 connection.commit 將操作提交為交易。

    result = cursor.fetchone()
    print(f"Inserted Product ID : {result['ProductID']}")
    conn.commit()
    

    小提示

    您可以選擇性地使用 connection.rollback 來回復交易。

  6. 使用 cursor.closeconnection.close關閉游標和連接。

    cursor.close()
    conn.close()
    
  7. 儲存app.py 檔案並再次測試應用程式。

    python app.py
    

    以下是預期的輸出。

    Inserted Product ID : 1001
    

後續步驟

mssql-python如需更多範例,請瀏覽驅動程式 GitHub 存放庫,以參與想法或報告問題。