Rövid útmutató: A Python használata Azure HorizonDB(előzetes verzió) adatainak csatlakoztatásához és lekérdezéséhez

Ebben a gyorsútmutatóban a Python használatával csatlakozhat egy Azure HorizonDB-példányhoz. Ezután SQL-utasításokkal lekérdezheti, beszúrhatja, frissítheti és törölheti az adatbázisban lévő adatokat macOS, Ubuntu Linux és Windows platformokról.

A cikkben szereplő lépések közé tartozik a PostgreSQL-hitelesítés.

A PostgreSQL-hitelesítés a PostgreSQL-ben tárolt fiókokat használja, és saját maga kell kezelnie a jelszavak rotálását.

Ez a cikk feltételezi, hogy már ismeri a Python használatával történő fejlesztést, de még nem használta Azure HorizonDB-t.

Prerequisites

Tűzfalszabályok hozzáadása az ügyfél-munkaállomáshoz

A fejlesztési környezet előkészítése

Váltson olyan mappára, ahol futtatni szeretné a kódot, és hozzon létre és aktiváljon egy virtuális környezetet. A virtuális környezet egy önálló könyvtár a Python adott verziójához, valamint az alkalmazáshoz szükséges többi csomaghoz.

Futtassa a következő parancsokat egy virtuális környezet létrehozásához és aktiválásához:

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

A Python-kódtárak telepítése

Telepítse a példakódok futtatásához szükséges Python-kódtárakat.

Telepítse a psycopg modult, amely lehetővé teszi a PostgreSQL-adatbázisokhoz való csatlakozást és lekérdezést.

# 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

Hitelesítési kód hozzáadása

Ebben a szakaszban hitelesítési kódot ad hozzá a munkakönyvtárába, és végrehajtja a fürtpéldánnyal való hitelesítéshez és engedélyezéshez szükséges további lépéseket.

A hitelesítési kód hozzáadása előtt győződjön meg arról, hogy az egyes példákhoz szükséges csomagok telepítve vannak.

Szükséges csomagok (példák ebben a cikkben):

  • Példa jelszóra: psycopg (ajánlott: python -m pip install "psycopg[binary]")

Opcionális: hozzon létre egy requirements.txt fájlt ezekkel a bejegyzésekkel, és telepítsen a python -m pip install -r requirements.txt használatával a reprodukálható telepítésekhez.

  1. Másolja a következő kódot egy szerkesztőbe, és mentse egy get_conn.py nevű fájlba.

    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. Adatbázis kapcsolati adatainak lekérése.

    A Azure portál használata:

    1. Az Azure Portal bal oldali menüjében válassza az Az összes erőforrás lehetőséget, majd keresse meg a létrehozott fürtöt.

    2. Válassza ki a fürt nevét.

    3. Az erőforrás menüjében válassza az Áttekintés lehetőséget. Vigye az egérmutatót az elsődleges végpontként (olvasási/írási) megjelenített érték fölé, és válassza a Vágólapra másolás gombot.

      Képernyőkép az elsődleges végpont értékéről az Áttekintés lapon.

    4. Ha elfelejti a rendszergazdai bejelentkezés jelszavát, az Új jelszó kérése gombbal alaphelyzetbe állíthatja.

      Képernyőkép a Jelszó alaphelyzetbe állítása gombról az Áttekintés lapon.

  3. Környezeti változók beállítása a kapcsolati URI-elemekhez:

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

A Python-példák futtatása

A cikkben szereplő minden kód példánál:

  1. Hozzon létre egy új fájlt egy szövegszerkesztőben.

  2. Adja hozzá a példakódot a fájlhoz.

  3. Mentse a fájlt a projektmappába egy .py kiterjesztéssel, például postgres-insert.py. Windows esetén a fájl mentésekor győződjön meg arról, hogy az UTF-8 kódolás ki van választva.

  4. A projektmappában írja be a(z) python parancsot, majd utána a fájlnevet, például: python postgres-insert.py.

Tábla létrehozása és adatok beszúrása

Az alábbi példakód a Azure HorizonDB-fürthöz csatlakozik a psycopg.connect függvénnyel, és egy SQL INSERT utasítással tölti be az adatokat. A cursor.execute függvény végrehajtja az SQL-lekérdezést az adatbázison.

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

Ha a kód sikeresen fut, a következő kimenetet hozza létre:

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

Adatok beolvasása

Az alábbi példakód csatlakozik a Azure HorizonDB-fürthöz, és a cursor.execute parancsot használja az SQL SELECT utasítással az adatok olvasásához. Ez a függvény egy lekérdezést fogad el, és visszaad egy eredményhalmazt, amely a cursor.fetchall() használatával iterál.

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

Ha a kód sikeresen fut, a következő kimenetet hozza létre:

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

Adatok frissítése

Az alábbi példakód csatlakozik a Azure HorizonDB-fürthöz, és a cursor.execute parancsot használja az SQL UPDATE utasítással az adatok frissítéséhez.

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

Adatok törlése

Az alábbi példakód csatlakozik a Azure HorizonDB-fürthöz, és a cursor.execute parancsot használja az SQL DELETE utasítással a korábban beszúrt készletelem törléséhez.

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