Rövid útmutató: Adatok csatlakoztatása és lekérdezése a Python használatával az Azure Database for PostgreSQL-ben – rugalmas kiszolgáló
A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló
Ebben a rövid útmutatóban egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz csatlakozhat a Python használatával. 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ét hitelesítési módszert tartalmaznak: a Microsoft Entra-hitelesítést és a PostgreSQL-hitelesítést. A Jelszó nélküli lapon a Microsoft Entra-hitelesítés, a Jelszó lapon pedig a PostgreSQL-hitelesítés látható.
A Microsoft Entra-hitelesítés az Azure Database for PostgreSQL-hez való csatlakozás mechanizmusa a Microsoft Entra ID-ban meghatározott identitások használatával. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az adatbázis felhasználói identitásait és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést. További információ: Microsoft Entra-hitelesítés rugalmas Azure Database for PostgreSQL-kiszolgálóval.
A PostgreSQL-hitelesítés a PostgreSQL-ben tárolt fiókokat használja. Ha jelszavakat használ a fiókok hitelesítő adataiként, ezeket a hitelesítő adatokat a rendszer a user
táblában tárolja. Mivel ezek a jelszavak a PostgreSQL-ben vannak tárolva, saját maga kell kezelnie a jelszavak rotálását.
Ez a cikk feltételezi, hogy ismeri a Python használatát, de még nem használta a rugalmas Azure Database for PostgreSQL-kiszolgálót.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Rugalmas Azure Database for PostgreSQL-kiszolgálópéldány. Rugalmas Azure Database for PostgreSQL-kiszolgálópéldány létrehozásához tekintse meg az Azure Database for PostgreSQL rugalmas kiszolgáló példányának létrehozását.
- Python 3.8+.
- A pipcsomag legújabb telepítője.
Tűzfalszabályok hozzáadása az ügyfél-munkaállomáshoz
- Ha rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt hozott létre privát hozzáféréssel (VNet-integráció), akkor a kiszolgálóval azonos virtuális hálózaton belüli erőforrásból kell csatlakoznia a kiszolgálóhoz. Létrehozhat egy virtuális gépet, és hozzáadhatja azt a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányával létrehozott virtuális hálózathoz. Tekintse meg az Azure Database for PostgreSQL – Rugalmas kiszolgálói virtuális hálózat létrehozása és kezelése az Azure CLI használatával.
- Ha rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt hozott létre nyilvános hozzáféréssel (engedélyezett IP-címekkel), hozzáadhatja a helyi IP-címet a kiszolgáló tűzfalszabályainak listájához. Tekintse meg az Azure Database for PostgreSQL rugalmas kiszolgálói tűzfalszabályok létrehozását és kezelését az Azure CLI használatával.
Microsoft Entra-integráció konfigurálása a kiszolgálón (csak jelszó nélküli)
Ha a jelszó nélküli hitelesítés lépéseit követi, a Microsoft Entra-hitelesítést konfigurálni kell a kiszolgálópéldányhoz, és Microsoft Entra-rendszergazdaként kell hozzárendelni a kiszolgálópéldányhoz. A Microsoft Entra-integráció konfigurálásához kövesse a Microsoft Entra-hitelesítés konfigurálását és a kiszolgálópéldány Microsoft Entra-rendszergazdaként való hozzárendelését.
A fejlesztő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 az Azure-identitástárat , amely a Microsoft Entra-jogkivonat-hitelesítést támogatja az Azure SDK-ban.
pip install azure-identity
Hitelesítési kód hozzáadása
Ebben a szakaszban hitelesítési kódot ad hozzá a munkakönyvtárhoz, és végrehajtja a kiszolgálópéldány hitelesítéséhez és engedélyezéséhez szükséges további lépéseket.
Másolja a következő kódot egy szerkesztőbe, és mentse egy get_conn.py nevű fájlba.
import urllib.parse import os from azure.identity import DefaultAzureCredential # IMPORTANT! This code is for demonstration purposes only. It's not suitable for use in production. # For example, tokens issued by Microsoft Entra ID have a limited lifetime (24 hours by default). # In production code, you need to implement a token refresh policy. 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']) sslmode = os.environ['SSLMODE'] # Use passwordless authentication via DefaultAzureCredential. # IMPORTANT! This code is for demonstration purposes only. DefaultAzureCredential() is invoked on every call. # In practice, it's better to persist the credential across calls and reuse it so you can take advantage of token # caching and minimize round trips to the identity provider. To learn more, see: # https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/identity/azure-identity/TOKEN_CACHING.md credential = DefaultAzureCredential() # Call get_token() to get a token from Microsft Entra ID and add it as the password in the URI. # Note the requested scope parameter in the call to get_token, "https://ossrdbms-aad.database.windows.net/.default". password = credential.get_token("https://ossrdbms-aad.database.windows.net/.default").token db_uri = f"postgresql://{dbuser}:{password}@{dbhost}/{dbname}?sslmode={sslmode}" return db_uri
Adatbázis kapcsolati adatainak lekérése.
- Az Azure Portalon keresse meg és válassza ki a rugalmas Azure Database for PostgreSQL-kiszolgáló nevét.
- A kiszolgáló Áttekintés lapján másolja ki a kiszolgáló teljes nevét. A kiszolgáló teljes neve mindig a my-server-name.postgres.database.azure.com> formátumú<.
- A bal oldali menü Biztonság területén válassza a Hitelesítés lehetőséget. Győződjön meg arról, hogy fiókja a Microsoft Entra-rendszergazdák listában szerepel. Ha nem, végezze el a Microsoft Entra integrációjának konfigurálását a kiszolgálón (csak jelszó nélküli).
Környezeti változók beállítása a kapcsolati URI-elemekhez:
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=require
Cserélje le a következő helyőrző értékeket a parancsokban:
-
<server-name>
az Azure Portalról másolt értékkel. -
<username>
az Azure-felhasználónévvel; például.john@contoso.com
. -
<database-name>
a rugalmas Azure Database for PostgreSQL-kiszolgálóadatbázis nevével. A kiszolgáló létrehozásakor automatikusan létre lett hozva egy postgres nevű alapértelmezett adatbázis. Ezt az adatbázist használhatja, vagy létrehozhat egy új adatbázist SQL-parancsokkal.
-
Jelentkezzen be az Azure-ba a munkaállomáson. Bejelentkezhet az Azure CLI, az Azure PowerShell vagy az Azure Developer CLI használatával. Ha például az Azure CLI-vel szeretne bejelentkezni, írja be ezt a parancsot:
az login
A hitelesítési kód a Microsoft Entra-azonosítóval való hitelesítésre és egy jogkivonat beszerzésére szolgál
DefaultAzureCredential
, amely engedélyezi a műveletek végrehajtását a kiszolgálópéldányon.DefaultAzureCredential
támogatja a hitelesítési hitelesítő adatok típusainak láncát. A támogatott hitelesítő adatok közé tartoznak azok a hitelesítő adatok, amelyeket olyan fejlesztői eszközökbe jelentkezett be, mint az Azure CLI, az Azure PowerShell vagy az Azure Developer CLI.
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 például
python
a fájlnév és a fájlnévpython postgres-insert.py
szerepel.
Tábla létrehozása és adatok beszúrása
Az alábbi példakód a függvény használatával csatlakozik a rugalmas Azure Database for PostgreSQL-kiszolgálóadatbázishoz, és sql INSERT utasítással tölti be az psycopg.connect
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 a rugalmas Azure Database for PostgreSQL-kiszolgálóadatbázishoz csatlakozik, é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 a rugalmas Azure Database for PostgreSQL-kiszolgálóadatbázishoz csatlakozik, é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 a rugalmas Azure Database for PostgreSQL-kiszolgálóadatbázishoz csatlakozik, és a cursor.execute parancsot használja az SQL DELETE utasítással a korábban beszúrt leltárelem 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()
Kapcsolódó tartalom
- Rugalmas Azure Database for PostgreSQL-kiszolgáló kezelése.
- Rövid útmutató: A Java használatával csatlakozhat és lekérdezhet adatokat a rugalmas Azure Database for PostgreSQL-kiszolgáló egy példányából.
- Rövid útmutató: A .NET (C#) használatával csatlakozhat és lekérdezhet adatokat a rugalmas Azure Database for PostgreSQL-kiszolgáló egy példányából.
- Rövid útmutató: A Go nyelv használatával csatlakozhat és lekérdezhet adatokat a rugalmas Azure Database for PostgreSQL-kiszolgáló egy példányából.
- Rövid útmutató: A PHP használatával csatlakozhat és lekérdezhet adatokat a rugalmas Azure Database for PostgreSQL-kiszolgáló egy példányából.
- Rövid útmutató: Az Azure CLI használatával csatlakozhat és lekérdezhet adatokat a rugalmas Azure Database for PostgreSQL-kiszolgáló egy példányából.
- Rövid útmutató: Adatok importálása az Azure Database for PostgreSQL-ből – Rugalmas kiszolgáló a Power BI-ban.