Mulai cepat: Menyambungkan dengan driver mssql-python untuk Python

Dalam panduan memulai cepat ini, Anda menyambungkan skrip Python ke database yang Anda buat dan memuat dengan data sampel. Anda menggunakan mssql-python driver untuk Python untuk menyambungkan ke database Anda dan melakukan operasi dasar, seperti membaca dan menulis data.

Driver mssql-python tidak memerlukan dependensi eksternal apa pun pada komputer Windows. Driver menginstal semua yang dibutuhkan dengan satu pip instalasi, memungkinkan Anda menggunakan versi terbaru driver untuk skrip baru tanpa merusak skrip lain yang belum sempat Anda tingkatkan dan uji.

Gunakan contoh autentikasi SQL lokal dalam artikel ini hanya untuk pengembangan lokal terhadap instans SQL Server yang Anda kontrol. Untuk Azure SQL Database, database SQL di Fabric, lingkungan pengembangan bersama, CI, dan penyebaran produksi, mulailah dengan autentikasi Microsoft Entra atau alur tanpa kata sandi lainnya.

dokumentasi mssql-python | kode sumber mssql-python | Paket (PyPI) | Visual Studio Code

Prasyarat

Buat atau sambungkan ke database di SQL Server, Azure SQL Database, atau database SQL di Fabric. Gunakan langkah-langkah berikut untuk menyiapkan database dengan AdventureWorks2025 skema sampel, dan simpan string koneksi untuk nanti.

Membuat basis data SQL

Buat atau sambungkan ke database SQL di salah satu platform berikut:

Pengaturan

Ikuti langkah-langkah ini untuk mengonfigurasi lingkungan pengembangan Anda untuk mengembangkan aplikasi menggunakan mssql-python driver Python.

Nota

Driver ini menggunakan protokol Tabular Data Stream (TDS). SQL Server, database SQL di Fabric, dan Azure SQL Database mengaktifkan TDS secara default, sehingga tidak diperlukan konfigurasi tambahan.

Menginstal paket mssql-python

mssql-python Dapatkan paket dari PyPI.

  1. Buka prompt perintah di direktori kosong.

  2. Pasang paket mssql-python tersebut.

    pip install mssql-python
    

Instal paket python-dotenv

Dapatkan paket python-dotenv dari PyPI.

  1. Di direktori yang sama, instal python-dotenv paket.

    pip install python-dotenv
    

Periksa paket yang terinstal

Anda dapat menggunakan alat baris perintah PyPI untuk memverifikasi bahwa paket yang Anda maksudkan diinstal.

  1. Periksa daftar paket yang diinstal dengan pip list.

    pip list
    

Menjalankan kode

Buat file baru

  1. Buat file baru bernama app.py.

  2. Tambahkan docstring modul.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Mengimpor paket, termasuk mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. mssql-python.connect Gunakan fungsi untuk menyambungkan ke database SQL.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. Di direktori saat ini, buat file baru bernama .env.

  6. Di dalam file .env, tambahkan entri untuk string koneksi Anda yang bernama SQL_CONNECTION_STRING. Gunakan salah satu contoh berikut dan ganti placeholder dengan nilai aktual Anda.

    Untuk Azure SQL Database atau database SQL di Fabric, mulailah dengan autentikasi Microsoft Entra:

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

    Untuk SQL Server lokal selama pengembangan, mulailah dengan autentikasi SQL:

    SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"
    

    Caution

    Perlakukan .env sebagai kenyamanan pengembangan lokal, bukan mekanisme penyebaran. Jangan pernah menerapkannya, jangan pernah menggunakan kembali sampel autentikasi SQL ini di lingkungan bersama atau produksi, dan tetap mengaktifkan validasi sertifikat di luar pengembangan lokal.

    Gunakan string koneksi untuk mengadaptasi sampel untuk instans bernama, kontainer, atau pengaturan lanjutan. Jika Anda menyambungkan ke Azure SQL Database atau database SQL di Fabric, gunakan autentikasi Microsoft Entra untuk opsi masuk tanpa kata sandi dan interaktif. Untuk panduan rahasia dan sertifikat yang lebih luas, lihat Praktik terbaik keamanan.

Menjalankan kueri

Gunakan string kueri SQL untuk menjalankan kueri dan mengurai hasilnya.

  1. Buat variabel untuk string kueri 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. Gunakan cursor.execute untuk mengambil kumpulan hasil dari kueri terhadap database.

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

    Nota

    Fungsi ini pada dasarnya menerima kueri apa pun dan mengembalikan kumpulan hasil. Untuk mengulangi kumpulan hasil, gunakan cursor.fetchone().

  3. Gunakan cursor.fetchall dengan perulangan for untuk mendapatkan semua rekaman dari database. Kemudian, cetak catatan.

    records = cursor.fetchall()
    for r in records:
      print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")
    
  4. Simpanapp.py file.

    Petunjuk / Saran

    Di macOS, baik ActiveDirectoryInteractive dan ActiveDirectoryDefault berfungsi untuk autentikasi Microsoft Entra. ActiveDirectoryInteractive meminta Anda untuk masuk setiap kali Anda menjalankan skrip. Untuk menghindari permintaan masuk berulang, masuk sekali melalui Azure CLI dengan menjalankan az login, lalu gunakan ActiveDirectoryDefault, yang menggunakan kembali kredensial yang di-cache.

  5. Buka terminal dan uji aplikasi.

    python app.py
    

    Berikut adalah output yang diharapkan.

    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
    

Sisipkan sebuah baris sebagai transaksi

Jalankan pernyataan INSERT dengan aman dan teruskan parameter. Meneruskan parameter dalam bentuk nilai melindungi aplikasi Anda dari serangan injeksi SQL.

  1. Tambahkan impor untuk randrange dari pustaka random ke bagian atas app.py.

    from random import randrange
    
  2. Di akhir app.py tambahkan kode untuk menghasilkan nomor produk acak.

    productNumber = randrange(1000)
    

    Petunjuk / Saran

    Menghasilkan nomor produk acak di sini memastikan bahwa Anda dapat menjalankan sampel ini beberapa kali.

  3. Buat string pernyataan 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)
    """
    
  4. Jalankan pernyataan menggunakan cursor.execute.

    cursor.execute(
       SQL_STATEMENT,
       {
          'name': f'Example Product {productNumber}',
          'product_number': f'EXAMPLE-{productNumber}',
          'standard_cost': 100,
          'list_price': 200
       }
    )
    
  5. Ambil satu hasil menggunakan cursor.fetchone, cetak pengidentifikasi unik hasil, lalu lakukan operasi sebagai transaksi menggunakan connection.commit.

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

    Petunjuk / Saran

    Secara opsional, Anda dapat menggunakan connection.rollback untuk mengembalikan transaksi.

  6. Tutup kursor dan koneksi menggunakan cursor.close dan connection.close.

    cursor.close()
    conn.close()
    
  7. app.py file dan uji aplikasi lagi.

    python app.py
    

    Berikut adalah output yang diharapkan.

    Inserted Product ID : 1001
    

Langkah berikutnya

Gunakan artikel ini untuk terus membangun:

  • String koneksi untuk mengadaptasi sampel untuk SQL Server lokal, Azure SQL, kontainer, dan instans bernama.
  • Manajemen koneksi untuk menggunakan pengelola konteks, pengumpulan, dan pengaturan koneksi.
  • Pemecahan masalah untuk mendiagnosis masalah autentikasi, sertifikat, dan konektivitas.