Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egy fiókot ingyenesen.
- Egy Azure HorizonDB-fürt. Ha Azure HorizonDB-fürtöt szeretne létrehozni, tekintse meg A Azure HorizonDB-fürt létrehozása.
- Python 3,8+.
- A pipcsomag legújabb telepítője.
Tűzfalszabályok hozzáadása az ügyfél-munkaállomáshoz
- Ha az Azure HorizonDB-fürtjét nyilvános hozzáféréssel (engedélyezett IP-címek) hozta létre, hozzáadhatja a helyi IP-címét a fürt tűzfalszabályainak listájához. Lásd: Networking in Azure HorizonDB (előzetes verzió).
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.
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_uriAdatbázis kapcsolati adatainak lekérése.
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.
Válassza ki a fürt nevét.
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.
Ha elfelejti a rendszergazdai bejelentkezés jelszavát, az Új jelszó kérése gombbal alaphelyzetbe állíthatja.
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:
Hozzon létre egy új fájlt egy szövegszerkesztőben.
Adja hozzá a példakódot a fájlhoz.
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.
A projektmappában írja be a(z)
pythonparancsot, 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()