Hızlı Başlangıç: Python için mssql-python sürücüsüne bağlanma

Bu hızlı başlangıçta, bir Python betiğini oluşturduğunuz ve örnek verilerle yüklediğiniz bir veritabanına bağlarsınız. Veritabanınıza bağlanmak ve veri okuma ve yazma gibi temel işlemleri gerçekleştirmek için Python için mssql-python sürücüsünü kullanıyorsunuz.

Sürücü, mssql-python Windows makinelerinde dış bağımlılık gerektirmez. Sürücü, ihtiyaç duyduğu her şeyi tek pip bir yüklemeyle yükler ve yükseltmeye ve test etmeye vaktiniz olmayan diğer betikleri bozmadan yeni betikler için sürücünün en son sürümünü kullanmanıza olanak sağlar.

Bu makaledeki yerel SQL kimlik doğrulama örneğini yalnızca kontrol ettiğiniz bir SQL Server örneğine karşı yerel geliştirme için kullanın. Azure SQL Veritabanı, Fabric’te SQL veritabanı, paylaşılan geliştirme ortamları, CI ve üretim dağıtımları için Microsoft Entra kimlik doğrulamasıyla veya başka bir parola gerektirmeyen yöntemle başlayın.

mssql-python belgeleri | mssql-python kaynak kodu | Paket (PyPI) | Visual Studio Code

Önkoşullar

SQL Server, Azure SQL Veritabanı veya Fabric'te SQL veritabanı oluşturun veya bağlanın. Örnek şema ile bir veritabanı AdventureWorks2025 kurmak için aşağıdaki adımları kullanın ve bağlantı dizesi'i daha sonra için saklayın.

SQL veritabanı oluşturma

Aşağıdaki platformlardan birinde bir SQL veritabanı oluşturun veya bağlanın:

Kurulum

Python sürücüsünü kullanarak mssql-python bir uygulama geliştirmek üzere geliştirme ortamınızı yapılandırmak için bu adımları izleyin.

Uyarı

Bu sürücü , Tabular Data Stream (TDS) protokolünü kullanır. SQL Server, Fabric'teki SQL veritabanı ve Azure SQL Veritabanı varsayılan olarak TDS'yi etkinleştirir, yani ekstra yapılandırmaya gerek yoktur.

İşletim sistemi ön koşullarını kurun

Tek seferlik işletim sistemine özgü önkoşulları yükleyin. Windows kullanıcıları bu adımı atlayabilir. Platformun tam detayları için mssql-python'u Install sayfasına bakınız.

apk add libtool krb5-libs krb5-dev libstdc++

mssql-python paketini yükleme

mssql-python Paketi PyPI'dan alın.

  1. Boş bir dizinde bir komut istemi açın.

  2. mssql-python paketini yükleyin.

    pip install mssql-python
    

python-dotenv paketini kur

python-dotenv paketini PyPI'den edinin.

Aynı dizinde paketi yükleyin python-dotenv .

pip install python-dotenv

Yüklü paketleri denetleme

İstediğiniz paketlerin kurulduğunu doğrulamak için kullanın pip list .

pip list

Kodu çalıştır

Yeni dosya oluşturma

  1. app.py adlı yeni bir dosya oluşturun.

  2. Modül docstring ekleyin.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. dahil olmak üzere mssql-pythonpaketleri içeri aktarma.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. mssql-python.connect bir SQL veritabanına bağlanmak için işlevini kullanın.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. Geçerli dizinde adlı .envyeni bir dosya oluşturun.

  6. dosyasının içine .env bağlantı dizeniz için adlı SQL_CONNECTION_STRINGbir girdi ekleyin. Aşağıdaki örneklerden birini kullanın ve yer tutucuları gerçek değerlerinizle değiştirin.

    Azure SQL Veritabanı veya Fabric'teki SQL veritabanı için Microsoft Entra doğrulama ile başlayın:

    SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    Geliştirme sırasında yerel SQL Server için, SQL kimlik doğrulama ile başlayın:

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

    Caution

    Yerel .env bir geliştirme kolaylığı olarak ele alın, bir dağıtım mekanizması olarak değil. Bunu asla commit etmeyin, bu SQL kimlik doğrulaması örneğini paylaşılan veya üretim ortamlarında asla yeniden kullanmayın ve sertifika doğrulamasını yerel geliştirme dışında etkin bırakın.

    Örneği adlandırılmış örnekler, kapsayıcılar veya gelişmiş ayarlar için uyarlamak üzere Bağlantı dizileri kullanın. Azure SQL Veritabanı veya Fabric'teki SQL veritabanına bağlanıyorsanız, şifresiz ve etkileşimli giriş seçenekleri için Microsoft Entra doğrulamasını kullanın. Daha geniş gizlilik ve sertifika rehberliği için Güvenlik en iyi uygulamalarına bakınız.

    Tavsiye

    macOS'ta hem ActiveDirectoryInteractive hem de ActiveDirectoryDefault Microsoft Entra kimlik doğrulaması için çalışır. ActiveDirectoryInteractive betiği her çalıştırdığınızda oturum açmanızı ister. Tekrar tekrar giriş istemlerini önlemek için, Azure CLIaz login komutuyla bir kez oturum açın ve ActiveDirectoryDefault kullanın. ActiveDirectoryDefault Önbelleğe alınan kimlik bilgilerini tekrar kullanır.

Sorgu yürütme

Bir sorgu çalıştırmak ve sonuçları ayrıştırmak için Transact-SQL (T-SQL) sorgu dizisi kullanın.

  1. T-SQL sorgu dizisi için bir değişken oluşturun.

    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. Veritabanındaki bir sorgudan sonuç kümesi almak için kullanın cursor.execute .

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

    Uyarı

    Bu fonksiyon herhangi bir sorguyu kabul eder ve bir sonuç kümesi döndürür. Sonuç kümesini yineleme yapmak için cursor.fetchone() kullanabilirsiniz.

  3. Veritabanındaki tüm kayıtları almak için cursor.fetchall, bir for döngü ile kullanın. Sonra kayıtları bastır.

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

  5. Bir terminal açın ve uygulamayı test edin.

    python app.py
    

    Beklenen çıktı budur.

    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
    

İşlem olarak bir satır ekle

Bir INSERT komutunu güvenli bir şekilde yürütün ve parametreleri geçirin. Parametrelerin değer olarak geçirilmesi uygulamanızı SQL ekleme saldırılarına karşı korur.

  1. randrange kitaplığından random içeri aktarmasını app.py üst kısmına ekleyin.

    from random import randrange
    
  2. app.py Sonuna rastgele bir ürün numarası oluşturmak için kod ekleyin.

    productNumber = randrange(1000)
    

    Tavsiye

    Rastgele bir ürün numarası, bu örneği birden fazla kez çalıştırdığınızda yinelenen anahtar hatası olasılığını azaltır.

  3. Bir T-SQL deyim dizesi oluşturun.

    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. cursor.execute kullanarak ifadeyi yürütün.

    cursor.execute(
        SQL_STATEMENT,
        {
            'name': f'Example Product {productNumber}',
            'product_number': f'EXAMPLE-{productNumber}',
            'standard_cost': 100,
            'list_price': 200
        }
    )
    
  5. cursor.fetchone kullanarak tek sonucu alın, sonucun benzersiz tanımlayıcısını yazdırın ve ardından connection.commit kullanarak işlemi bir işlem olarak onaylayın.

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

    Tavsiye

    İsteğe bağlı olarak, işlemi geri almak için kullanabilirsiniz connection.rollback .

  6. cursor.close ve connection.close kullanarak imleci ve bağlantıyı kapatın.

    cursor.close()
    conn.close()
    
  7. Dosyayı app.py ve uygulamayı yeniden test edin.

    python app.py
    

    Beklenen çıktı budur.

    Inserted Product ID : 1001