Rychlý start: Použití Python k připojení a dotazování dat pro Azure HorizonDB (Preview)

V tomto rychlém startu se pomocí Python připojíte k instanci Azure HorizonDB. Příkazy SQL pak použijete k dotazování, vkládání, aktualizaci a odstraňování dat v databázi z platforem macOS, Ubuntu Linux a Windows.

Kroky v tomto článku zahrnují ověřování PostgreSQL.

Ověřování PostgreSQL používá účty uložené v PostgreSQL a potřebujete spravovat obměnu hesel sami.

Tento článek předpokládá, že máte zkušenosti s vývojem pomocí Python, ale začínáte pracovat s Azure HorizonDB.

Předpoklady

Přidejte pravidla brány firewall pro klientskou pracovní stanici

  • Pokud jste vytvořili cluster Azure HorizonDB s přístupem Public (povolené IP adresy) , můžete místní IP adresu přidat do seznamu pravidel brány firewall v clusteru. Projděte si Networking v Azure HorizonDB (Preview).

Příprava vývojového prostředí

Přejděte do složky, ve které chcete spustit kód, a vytvořte a aktivujte virtuální prostředí. Virtuální prostředí je samostatný adresář pro konkrétní verzi Pythonu a další balíčky potřebné pro danou aplikaci.

Spuštěním následujících příkazů vytvořte a aktivujte virtuální prostředí:

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

Instalace knihoven Pythonu

Nainstalujte knihovny Pythonu potřebné ke spuštění příkladů kódu.

Nainstalujte modul psycopg, který umožňuje připojení k databázi PostgreSQL a dotazování na ji.

# 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

Přidání ověřovacího kódu

V této části přidáte do pracovního adresáře ověřovací kód a provedete všechny další kroky potřebné k ověřování a autorizaci v instanci clusteru.

Před přidáním ověřovacího kódu se ujistěte, že jsou nainstalované požadované balíčky pro každý příklad.

Požadované balíčky (příklady v tomto článku):

  • Příklad hesla: psycopg (doporučeno: python -m pip install "psycopg[binary]")

Volitelné: vytvořte requirements.txt s těmito položkami a nainstalujte pomocí python -m pip install -r requirements.txt pro reprodukovatelné instalace.

  1. Zkopírujte následující kód do editoru a uložte ho do souboru s názvem 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. Získejte informace o připojení k databázi.

    Použití portálu Azure:

    1. V nabídce vlevo na portálu Azure vyberte Všechny prostředky a vyhledejte cluster, který jste vytvořili.

    2. Vyberte název clusteru.

    3. V nabídce zdrojů vyberte Přehled. Najeďte myší na hodnotu zobrazenou jako primární koncový bod (čtení/zápis) a vyberte tlačítko Kopírovat do schránky .

      Snímek obrazovky znázorňující hodnotu primárního koncového bodu na stránce Přehled

    4. Pokud zapomenete heslo pro přihlášení správce, můžete ho resetovat pomocí tlačítka Resetovat heslo .

      Snímek obrazovky s tlačítkem Resetovat heslo na stránce Přehled

  3. Nastavení proměnných prostředí pro elementy URI spojení:

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

Jak spustit příklady Pythonu

Pro každý příklad kódu v tomto článku:

  1. Vytvořte nový soubor v textovém editoru.

  2. Přidejte do souboru příklad kódu.

  3. Uložte soubor do složky projektu s příponou .py , například postgres-insert.py. V systému Windows se ujistěte, že při uložení souboru je vybrané kódování UTF-8.

  4. Ve složce projektu zadejte python následovaný názvem souboru, například python postgres-insert.py.

Vytvoření tabulky a vložení dat

Následující příklad kódu se připojí ke clusteru Azure HorizonDB pomocí funkce psycopg.connect a načte data pomocí příkazu SQL INSERT. Funkce cursor.execute spustí dotaz SQL na databázi.

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()

Když se kód úspěšně spustí, vytvoří následující výstup:

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

Čtení dat

Následující příklad kódu se připojí ke clusteru Azure HorizonDB a používá cursor.execute s příkazem SQL SELECT ke čtení dat. Tato funkce přijme dotaz a vrátí sadu výsledků pro iteraci pomocí 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()

Když se kód úspěšně spustí, vytvoří následující výstup:

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

Aktualizace dat

Následující příklad kódu se připojí ke clusteru Azure HorizonDB a použije cursor.execute s příkazem SQL UPDATE k aktualizaci dat.

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()

Odstranit data

Následující příklad kódu se připojí ke clusteru Azure HorizonDB a pomocí příkazu SQL DELETE odstraní položku inventáře, kterou jste předtím vložili.

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()