Mulai cepat: Menyambungkan ke database SQL dari Jupyter Notebook

Dalam panduan mulai cepat ini, gunakan Jupyter Notebook di Visual Studio Code untuk dengan cepat memperoleh wawasan bisnis. Gunakan mssql-python driver untuk Python untuk terhubung ke database SQL Anda, membaca data, lalu memformatnya untuk digunakan dalam email, laporan, dan presentasi.

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.

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

Prasyarat

Instal prasyarat sistem operasi

Instal prasyarat khusus sistem operasi satu kali. Pengguna Windows dapat melewati langkah ini. Untuk detail platform lengkap, lihat Menginstal mssql-python.

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

Membuat basis data SQL

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

Membuat proyek dan menjalankan kode

Membuat proyek baru

  1. Buka jendela perintah di direktori pengembangan Anda. Jika Anda tidak memilikinya, buat direktori baru, seperti python atau scripts. Hindari folder di OneDrive Anda, karena sinkronisasi dapat mengganggu pengelolaan lingkungan virtual Anda.

  2. Buat proyek baru dengan uv.

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

Tambah dependensi

Di direktori yang sama, instal paket mssql-python, python-dotenv, rich, pandas, dan matplotlib. Kemudian tambahkan ipykernel dan uv sebagai dependensi dev. VS Code memerlukan ipykernel untuk menjalankan sel buku catatan dan uv mengelola paket dari dalam sel buku catatan Anda.

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

Luncurkan Visual Studio Code

Di direktori yang sama, jalankan perintah berikut.

code .

Memperbarui pyproject.toml

  1. pyproject.toml Buka file di editor Anda. File ini berisi metadata untuk proyek Anda.

  2. Perbarui description nilainya.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Simpan dan tutup file.

Simpan string koneksi

  1. .gitignore Buka file dan tambahkan pengecualian untuk .env file. File Anda harus mirip dengan contoh berikut.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Simpan dan tutup .gitignore.

  3. Di direktori saat ini, buat file baru bernama .env.

  4. Di dalam file .env, tambahkan entri untuk string koneksi Anda yang bernama SQL_CONNECTION_STRING. Ganti "placeholder" dengan nilai aktual Anda.

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

    string koneksi tergantung pada jenis database SQL yang Anda sambungkan ke. Untuk Azure SQL Database atau database SQL di Fabric, gunakan ODBC string koneksi dari tab string koneksis, dan sesuaikan tipe autentikasi untuk skenario Anda. Untuk informasi lebih lanjut tentang sintaks string koneksi, lihat Connection strings untuk mssql-python.

    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 dengan perintah Azure CLIaz login, lalu gunakan ActiveDirectoryDefault. ActiveDirectoryDefault menggunakan kembali kredensial yang tersimpan di cache.

Membuat Jupyter Notebook

  1. Pilih File, lalu File Baru dan Jupyter Notebook dari daftar. Buku catatan baru terbuka.

  2. Pilih File, lalu Simpan Sebagai... dan beri nama buku catatan baru Anda.

  3. Tambahkan impor berikut di sel pertama.

    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. Gunakan tombol + Markdown di bagian atas buku catatan untuk menambahkan sel markdown baru.

  5. Tambahkan teks berikut ke sel markdown baru.

    ## Define queries for use later
    
  6. Pilih tanda centang di toolbar sel atau gunakan pintasan keyboard Ctrl+Enter atau Shift+Enter untuk merender sel markdown.

  7. Gunakan tombol + Kode di bagian atas buku catatan untuk menambahkan sel kode baru.

  8. Tambahkan kode berikut ke sel kode baru.

    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;
    """
    

Menampilkan hasil dalam tabel

  1. Gunakan tombol + Markdown di bagian atas buku catatan untuk menambahkan sel markdown baru.

  2. Tambahkan teks berikut ke sel markdown baru.

    ## Print orders by customer and display in a table
    
  3. Pilih tanda centang di toolbar sel atau gunakan pintasan keyboard Ctrl+Enter atau Shift+Enter untuk merender sel markdown.

  4. Gunakan tombol + Kode di bagian atas buku catatan untuk menambahkan sel kode baru.

  5. Tambahkan kode berikut ke sel kode baru.

    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. Gunakan tombol Jalankan Semua di bagian atas buku catatan untuk menjalankan buku catatan.

  7. Pilih kernel jupyter-notebook-qs saat diminta.

Menampilkan hasil dalam bagan

  1. Tinjau keluaran dari sel sebelumnya. Anda akan melihat tabel dengan tiga kolom dan lima baris.

  2. Gunakan tombol + Markdown di bagian atas buku catatan untuk menambahkan sel markdown baru.

  3. Tambahkan teks berikut ke sel markdown baru.

    ## Display spend by category in a horizontal bar chart
    
  4. Pilih tanda centang di toolbar sel atau gunakan pintasan keyboard Ctrl+Enter atau Shift+Enter untuk merender sel markdown.

  5. Gunakan tombol + Kode di bagian atas buku catatan untuk menambahkan sel kode baru.

  6. Tambahkan kode berikut ke sel kode baru.

    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. Gunakan tombol Jalankan Sel atau Ctrl+Alt+Enter untuk menjalankan sel.

  8. Tinjau grafiknya.