Hızlı Başlangıç: Jupyter Notebook'tan SQL veritabanına bağlanma

Bu hızlı başlangıçta, Visual Studio Code'ta Jupyter Notebook'u kullanarak iş içgörülerini hızlıca elde edebilirsiniz. mssql-python Python sürücüsünü kullanarak SQL veritabanınıza bağlanın, verileri okuyun ve ardından e-postalarda, raporlarda ve sunumlarda kullanılacak şekilde biçimlendirin.

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.

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

Önkoşullar

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

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++

SQL veritabanı oluşturma

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

Projeyi oluşturma ve kodu çalıştırma

Yeni proje oluşturma

  1. Geliştirme dizininizde bir komut istemi açın. Eğer bir dizin yoksa, yeni bir dizin oluşturun, örneğin python veya scripts. OneDrive'ınızdaki klasörlerden kaçının, çünkü senkronizasyon sanal ortamınızı yönetmenize engel olabilir.

  2. ile yeni bir uv oluşturun.

    uv init jupyter-notebook-qs
    cd jupyter-notebook-qs
    

Bağımlılık ekleme

Aynı dizinde , , mssql-python, python-dotenvrichve pandas paketlerini yükleyinmatplotlib. Ardından ipykernel ve uv öğelerini geliştirme bağımlılıkları olarak ekleyin. VS Code'un not defteri hücrelerini çalıştırmak için ipykernel ve not defteri hücrelerinizin içinden paketleri yönetmek için uv gerekir.

uv add mssql-python python-dotenv rich pandas matplotlib
uv add --dev ipykernel
uv add --dev uv

Visual Studio Code'ı başlatma

Aynı dizinde aşağıdaki komutu çalıştırın.

code .

pyproject.toml güncelle

  1. pyproject.toml Dosyayı düzenleyicinizde açın. Bu dosya, projenizin meta verilerini içerir.

  2. Değeri description güncelleyin.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Dosyayı kaydedin ve kapatın.

Bağlantı dizesini kaydetme

  1. .gitignore dosyasını açın ve .env dosyaları için bir dışlama ekleyin. Dosyanız aşağıdaki örneğe benzer olmalıdır.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. kaydedin ve kapatın .gitignore.

  3. Geçerli dizinde adlı .envyeni bir dosya oluşturun.

  4. dosyasının içine .env bağlantı dizeniz için adlı SQL_CONNECTION_STRINGbir girdi ekleyin. Yer tutucuları gerçek değerlerinizle değiştirin.

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

    Bağlantı dizesi, bağlandığınız SQL veritabanı türüne bağlıdır. Azure SQL Veritabanı veya Fabric'teki SQL veritabanı için, bağlantı dizileri sekmesindeki ODBC bağlantı dizesi'i kullanın ve senaryonuza göre kimlik doğrulama türünü ayarlayın. bağlantı dizesi sözdizimi hakkında daha fazla bilgi için mssql-python için bağlantı dizileri bölümünü inceleyebilirsiniz.

    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.

Jupyter Not Defteri oluşturma

  1. Listeden Dosya'yı, ardından Yeni Dosya ve Jupyter Not Defteri'ni seçin. Yeni bir not defteri açılır.

  2. Dosya'yı ve ardından Farklı Kaydet... öğesini seçin ve yeni not defterinize bir ad verin.

  3. İlk hücreye aşağıdaki kütüphaneleri ekleyin.

    from os import getenv
    from mssql_python import connect
    from dotenv import load_dotenv
    from rich.console import Console
    from rich.table import Table
    import pandas as pd
    import matplotlib.pyplot as plt
    
  4. Not defterinin üst kısmındaki + Markdown düğmesini kullanarak yeni bir markdown hücresi ekleyin.

  5. Yeni markdown hücresine aşağıdaki metni ekleyin.

    ## Define queries for use later
    
  6. Hücredeki araç çubuğunda onay işaretini seçin veya markdown hücresini işlemek için klavye kısayollarını Ctrl+Enter ya da Shift+Enter kullanın.

  7. Yeni bir kod hücresi eklemek için not defterinin üst kısmındaki + Kod düğmesini kullanın.

  8. Yeni kod hücresine aşağıdaki kodu ekleyin.

    SQL_QUERY_ORDERS_BY_CUSTOMER = """
    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;
    """
    
    SQL_QUERY_SPEND_BY_CATEGORY = """
    SELECT TOP 10
        pc.Name AS ProductCategory,
        SUM(sod.OrderQty * sod.UnitPrice) AS Spend
    FROM SalesLT.SalesOrderDetail AS sod
    INNER JOIN SalesLT.SalesOrderHeader AS soh
        ON sod.SalesOrderID = soh.SalesOrderID
    INNER JOIN SalesLT.Product AS p
        ON sod.ProductID = p.ProductID
    INNER JOIN SalesLT.ProductCategory AS pc
        ON p.ProductCategoryID = pc.ProductCategoryID
    GROUP BY pc.Name
    ORDER BY Spend;
    """
    

Sonuçları tabloda görüntüleme

  1. Not defterinin üst kısmındaki + Markdown düğmesini kullanarak yeni bir markdown hücresi ekleyin.

  2. Yeni markdown hücresine aşağıdaki metni ekleyin.

    ## Print orders by customer and display in a table
    
  3. Hücredeki araç çubuğunda onay işaretini seçin veya markdown hücresini işlemek için klavye kısayollarını Ctrl+Enter ya da Shift+Enter kullanın.

  4. Yeni bir kod hücresi eklemek için not defterinin üst kısmındaki + Kod düğmesini kullanın.

  5. Yeni kod hücresine aşağıdaki kodu ekleyin.

    load_dotenv()
    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        with conn.cursor() as cursor:
            cursor.execute(SQL_QUERY_ORDERS_BY_CUSTOMER)
            if cursor:
                table = Table(title="Orders by Customer")
                # https://rich.readthedocs.io/en/stable/appendix/colors.html
                table.add_column("Customer ID", style="bright_blue", justify="center")
                table.add_column("Company Name", style="bright_white", justify="left")
                table.add_column("Order Count", style="bold green", justify="right")
    
                records = cursor.fetchall()
    
                for r in records:
                    table.add_row(f"{r.CustomerID}", f"{r.CompanyName}", f"{r.OrderCount}")
    
                Console().print(table)
    
  6. Not defterini çalıştırmak için not defterinin üst kısmındaki Tümünü Çalıştır düğmesini kullanın.

  7. İstendiğinde jupyter-notebook-qs çekirdeğini seçin.

Sonuçları grafikte görüntüleme

  1. Önceki hücrenin çıktısını inceleyin. Üç sütunlu ve beş satırlı bir tablo görmeniz gerekir.

  2. Not defterinin üst kısmındaki + Markdown düğmesini kullanarak yeni bir markdown hücresi ekleyin.

  3. Yeni markdown hücresine aşağıdaki metni ekleyin.

    ## Display spend by category in a horizontal bar chart
    
  4. Hücredeki araç çubuğunda onay işaretini seçin veya markdown hücresini işlemek için klavye kısayollarını Ctrl+Enter ya da Shift+Enter kullanın.

  5. Yeni bir kod hücresi eklemek için not defterinin üst kısmındaki + Kod düğmesini kullanın.

  6. Yeni kod hücresine aşağıdaki kodu ekleyin.

    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        data = pd.read_sql_query(SQL_QUERY_SPEND_BY_CATEGORY, conn)
        # Set the style - use print(plt.style.available) to see all options
        plt.style.use('seaborn-v0_8-notebook')
        plt.barh(data['ProductCategory'], data['Spend'])
    
  7. Hücreyi Yürüt düğmesini veya Ctrl+Alt+Enter hücreyi çalıştırmak için kullanın.

  8. Grafiği gözden geçir.