Mulai cepat: Gunakan Python untuk terhubung ke Azure HorizonDB (Pratinjau) dan membuat kueri data

Dalam panduan mulai cepat ini, Anda menyambungkan ke instans Azure HorizonDB dengan menggunakan Python. Anda kemudian menggunakan pernyataan SQL untuk mengkueri, menyisipkan, memperbarui, dan menghapus data dalam database dari platform macOS, Ubuntu Linux, dan Windows.

Langkah-langkah dalam artikel ini mencakup autentikasi PostgreSQL.

Autentikasi PostgreSQL menggunakan akun yang disimpan di PostgreSQL dan Anda perlu mengelola rotasi kata sandi sendiri.

Artikel ini mengasumsikan bahwa Anda terbiasa mengembangkan menggunakan Python, tetapi Anda baru bekerja dengan Azure HorizonDB.

Prerequisites

Menambahkan aturan firewall untuk stasiun kerja klien Anda

  • Jika Anda membuat kluster HorizonDB Azure dengan akses Public (alamat IP yang diizinkan), Anda dapat menambahkan alamat IP lokal Anda ke daftar aturan firewall pada kluster Anda. Lihat Networking di Azure HorizonDB (Pratinjau).

Mempersiapkan lingkungan pengembangan Anda

Ubah ke folder tempat Anda ingin menjalankan kode dan membuat dan mengaktifkan lingkungan virtual. Lingkungan virtual adalah direktori mandiri untuk versi Python tertentu ditambah paket lain yang diperlukan untuk aplikasi tersebut.

Jalankan perintah berikut untuk membuat dan mengaktifkan lingkungan virtual:

py -3 -m venv .venv
.venv\Scripts\activate

Menginstal pustaka Python

Instal pustaka Python yang diperlukan untuk menjalankan contoh kode.

Instal modul psycopg, yang memungkinkan menyambungkan dan mengkueri database PostgreSQL.

# Recommended: install the binary wheel that bundles a compatible libpq wrapper (Windows/macOS)
python -m pip install "psycopg[binary]"

# Linux alternative (if you prefer building against system libpq):
sudo apt-get update
sudo apt-get install -y libpq-dev build-essential python3-dev
python -m pip install psycopg

Menambahkan kode autentikasi

Di bagian ini, Anda menambahkan kode autentikasi ke direktori kerja Anda dan melakukan langkah tambahan apa pun yang diperlukan untuk autentikasi dan otorisasi dengan instans kluster Anda.

Sebelum Anda menambahkan kode autentikasi, pastikan paket yang diperlukan untuk setiap contoh diinstal.

Paket yang diperlukan (contoh dalam artikel ini):

  • Contoh kata sandi: psycopg (disarankan: python -m pip install "psycopg[binary]")

Opsional: buat requirements.txt dengan entri ini dan instal dengan python -m pip install -r requirements.txt untuk penginstalan yang dapat direproduksi.

  1. Salin kode berikut ke editor dan simpan dalam file bernama get_conn.py.

    import urllib.parse
    import os
    
    def get_connection_uri():
    
       # Read URI parameters from the environment
       dbhost = os.environ['DBHOST']
       dbname = os.environ['DBNAME']
       dbuser = urllib.parse.quote(os.environ['DBUSER'])
    password = os.environ['DBPASSWORD']
    sslmode = os.environ['SSLMODE']
    db_uri = f"host={dbhost} dbname={dbname} user={dbuser} password={password} sslmode={sslmode}"
       # Construct connection URI
       return db_uri
    
  2. Mendapatkan informasi koneksi database.

    Menggunakan portal Microsoft Azure:

    1. Dari menu sebelah kiri di portal Azure, pilih Semua sumber daya, lalu cari kluster yang telah Anda buat.

    2. Pilih nama kluster.

    3. Pada menu sumber daya, pilih Ringkasan. Arahkan mouse ke atas nilai yang ditampilkan sebagai Titik akhir utama (baca/tulis), dan pilih tombol Salin ke clipboard .

      Cuplikan layar memperlihatkan nilai titik akhir utama di halaman Gambaran Umum.

    4. Jika Anda lupa kata sandi login administrator, Anda dapat mengatur ulang menggunakan tombol Atur ulang kata sandi .

      Cuplikan layar memperlihatkan tombol Atur ulang kata sandi di halaman Gambaran Umum.

  3. Atur variabel lingkungan untuk elemen URI koneksi:

    set DBHOST=<cluster-name>
    set DBNAME=<database-name>
    set DBUSER=<username>
    set DBPASSWORD=<password>
    set SSLMODE=require
    

Cara menjalankan contoh Python

Untuk setiap contoh kode dalam artikel ini:

  1. Buat file baru di editor teks.

  2. Tambahkan contoh kode ke file.

  3. Simpan file di folder proyek Anda dengan ekstensi .py seperti postgres-insert.py. Untuk Windows, pastikan pengkodean UTF-8 dipilih saat Anda menyimpan file.

  4. Di folder proyek Anda, ketik python lalu nama file, misalnya python postgres-insert.py.

Membuat tabel dan menyisipkan data

Contoh kode berikut terhubung ke kluster Azure HorizonDB Anda menggunakan fungsi psycopg.connect, dan memuat data dengan pernyataan SQL INSERT. Fungsi ini cursor.execute menjalankan kueri SQL terhadap database.

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()

# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")

# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")

# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")

# Clean up
conn.commit()
cursor.close()
conn.close()

Ketika kode berjalan dengan sukses, kode menghasilkan output berikut:

Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data

Membaca data

Contoh kode berikut terhubung ke kluster HorizonDB Azure Anda dan menggunakan cursor.execute dengan pernyataan SQL SELECT untuk membaca data. Fungsi ini menerima kueri dan mengembalikan kumpulan hasil untuk diiterasi dengan menggunakan cursor.fetchall().

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()

# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()

# Print all rows
for row in rows:
    print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))

# Cleanup
conn.commit()
cursor.close()
conn.close()

Ketika kode berjalan dengan sukses, kode menghasilkan output berikut:

Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)

Perbarui data

Contoh kode berikut terhubung ke kluster HorizonDB Azure Anda dan menggunakan cursor.execute dengan pernyataan SQL UPDATE untuk memperbarui data.

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()

# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")

# Cleanup
conn.commit()
cursor.close()
conn.close()

Menghapus data

Contoh kode berikut terhubung ke kluster HorizonDB Azure Anda dan menggunakan cursor.execute dengan pernyataan SQL DELETE untuk menghapus item inventarisasi yang sebelumnya Anda sisipkan.

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()

# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")

# Cleanup
conn.commit()
cursor.close()
conn.close()