Bagikan melalui


Mulai cepat: Menyambungkan dengan driver pymssql untuk Python

Dalam panduan cepat ini, Anda menyambungkan skrip Python ke database yang telah Anda buat dan memuatnya dengan data sampel. Anda menggunakan pymssql driver untuk Python untuk menyambungkan ke database Anda dan melakukan operasi dasar, seperti membaca dan menulis data.

Dokumentasi pymssql | Kode sumber pymssql | Paket (PyPi)

Prasyarat

  • Python 3

    • Jika Anda belum memiliki Python, instal manajer paket runtime Python dan Python Package Index (PyPI) dari python.org.

    • Lebih suka tidak menggunakan lingkungan kerja Anda sendiri? Buka sebagai devcontainer menggunakan GitHub Codespaces.

  • pymssql paket dari PyPI.

  • Database di SQL Server, Azure SQL Database, atau database SQL di Fabric dengan AdventureWorks2022 skema sampel dan string koneksi yang valid.

Persiapan

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

Nota

Driver ini menggunakan protokol TDS , yang diaktifkan secara default di SQL Server, database SQL di Fabric dan Azure SQL Database. Tidak diperlukan konfigurasi tambahan.

Menginstal paket pymssql

pymssql Dapatkan paket dari PyPI.

  1. Buka jendela perintah di direktori kosong.

  2. Pasang paket pymssql tersebut.

    pip install pymssql
    

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
    

Membuat basis data SQL

Panduan memulai cepat ini memerlukan skema AdventureWorks2022 Lightweight pada Microsoft SQL Server, atau pada database SQL di Fabric atau Azure SQL Database.

Menjalankan kode

Buat file baru

  1. Buat file baru bernama app.py.

  2. Tambahkan docstring modul.

    """
    Connects to a SQL database using pymssql
    """
    
  3. Mengimpor paket, termasuk pymssql.

    from os import getenv
    from dotenv import load_dotenv
    from pymssql import connect
    
  4. pymssql.connect Gunakan fungsi untuk menyambungkan ke database SQL.

    load_dotenv()
    conn = connect(getenv("SQL_SERVER"),getenv("SQL_USER"),getenv("SQL_PASSWORD"),getenv("SQL_DATABASE"))
    
  5. Di direktori saat ini, buat file baru bernama *.env.

  6. Dalam file *.env, tambahkan entri untuk nilai string koneksi Anda yang bernama SQL_SERVER, SQL_USER, SQL_PASSWORD, SQL_DATABASE. Ganti placeholder di sini dengan nilai string koneksi Anda yang sebenarnya.

    SQL_SERVER="<server_name>"
    SQL_USER="<sql_user_name>"
    SQL_PASSWORD="<sql_user_password>"
    SQL_DATABASE="<sql_database>"
    

    Petunjuk / Saran

    String koneksi yang digunakan di sini sebagian besar tergantung pada jenis database SQL yang Anda sambungkan. Untuk informasi selengkapnya tentang string koneksi dan sintaksnya, lihat referensi sintaks string koneksi.

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(as_dict=True)
    cursor.execute(SQL_QUERY)
    

    Nota

    Fungsi ini pada dasarnya menerima kueri apa pun dan mengembalikan kumpulan hasil, yang dapat diulang dengan penggunaan cursor.fetchone().

  3. Gunakan perulangan foreach untuk mendapatkan semua rekaman dari database. Kemudian cetak rekaman.

    for r in cursor:
        print(f"{r['CustomerID']}\t{r['OrderCount']}\t{r['CompanyName']}")
    
  4. Simpan file app.py.

  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 baris sebagai transaksi

Jalankan pernyataan INSERT dengan aman dan lewati parameter. Meneruskan parameter sebagai nilai melindungi aplikasi Anda dari serangan injeksi SQL.

  1. Tambahkan perintah import 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 (%s, %s, %s, %s, CURRENT_TIMESTAMP)
    """
    
  4. Jalankan pernyataan menggunakan cursor.execute.

    cursor.execute(
        SQL_STATEMENT,
        (
            f'Example Product {productNumber}',
            f'EXAMPLE-{productNumber}',
            100,
            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 memutar kembali 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 selanjutnya

pymssql Kunjungi repositori GitHub driver untuk contoh lebih lanjut, untuk menyumbangkan ide atau melaporkan masalah.