Aracılığıyla paylaş


Hızlı Başlangıç: Python için pymssql 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. pymssql Python sürücüsünü kullanarak veritabanınıza bağlanır ve verileri okuma ve yazma gibi temel işlemleri gerçekleştirirsiniz.

pymssql belgeleri | pymssql kaynak kodu | Paket (PyPi)

Önkoşullar

  • Python 3

  • pymssql paketini PyPI'den edinin.

  • SQL Server, Azure SQL Veritabanı veya Fabric'deki SQL veritabanında, örnek bir şema ve geçerli bir bağlantı dizesi.

Kurulum

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

Uyarı

Bu sürücü SQL Server'da, Doku'daki SQL veritabanında ve Azure SQL Veritabanı'nda varsayılan olarak etkinleştirilen TDS protokolunu kullanır. Ek yapılandırma gerekmez.

pymssql paketini yükleme

pymssql Paketi PyPI'dan alın.

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

  2. pymssql paketini yükleyin.

    pip install pymssql
    

Yüklü paketleri denetleme

Hedeflenen paketlerinizin yüklendiğini doğrulamak için PyPI komut satırı aracını kullanabilirsiniz.

  1. ile pip listyüklü paketlerin listesini denetleyin.

    pip list
    

SQL veritabanı oluşturma

Bu hızlı başlangıç rehberi için, Microsoft SQL Server'da AdventureWorks2022 Hafif şeması, Fabric üzerindeki SQL veritabanı veya Azure SQL Veritabanı gereklidir.

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 pymssql
    """
    
  3. dahil olmak üzere pymssqlpaketleri içeri aktarma.

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

    load_dotenv()
    conn = connect(getenv("SQL_SERVER"),getenv("SQL_USER"),getenv("SQL_PASSWORD"),getenv("SQL_DATABASE"))
    
  5. Geçerli dizinde adlı *.envyeni bir dosya oluşturun.

  6. *.env dosyasında, bağlantı dizesi değerleriniz için , , SQL_SERVER, SQL_USERSQL_PASSWORDadlı SQL_DATABASEgirdiler ekleyin. Buradaki yer tutucuları gerçek bağlantı dizesi değerlerinizle değiştirin.

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

    Tavsiye

    Burada kullanılan bağlantı dizesi büyük ölçüde bağlandığınız SQL veritabanının türüne bağlıdır. Bağlantı dizeleri ve söz dizimi hakkında daha fazla bilgi için bkz. bağlantı dizesi söz dizimi başvurusu.

Sorgu yürütme

Sorguyu yürütmek ve sonuçları ayrıştırmak için SQL sorgu dizesi kullanın.

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

    Uyarı

    Bu işlev temelde herhangi bir sorguyu kabul eder ve cursor.fetchone() kullanımıyla yinelenebilen bir sonuç kümesi döndürür.

  3. Veritabanındaki tüm kayıtları almak için bir foreach döngü kullanın. Ardından kayıtları yazdırın.

    for r in cursor:
        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 deyimini güvenli bir şekilde gerçekleştirin ve parametreleri aktarın. 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

    Burada rastgele bir ürün numarası oluşturmak, bu örneği birden çok kez çalıştırabilmenizi sağlar.

  3. SQL deyimi dizesi oluşturun.

    SQL_STATEMENT = """
    INSERT SalesLT.Product (
    Name,
    ProductNumber,
    StandardCost,
    ListPrice,
    SellStartDate
    ) OUTPUT INSERTED.ProductID
    VALUES (%s, %s, %s, %s, CURRENT_TIMESTAMP)
    """
    
  4. cursor.execute kullanarak ifadeyi yürütün.

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

Sonraki adım

Fikirlere pymssql katkıda bulunmak veya sorunları bildirmek için daha fazla örnek için sürücü GitHub deposunu ziyaret edin.