Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu se připojíte k instanci flexibilního serveru Azure Database for PostgreSQL pomocí Pythonu. 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í dvě metody ověřování: ověřování Microsoft Entra a ověřování PostgreSQL. Karta Bez hesla zobrazuje ověřování Microsoft Entra a karta Heslo zobrazuje ověřování PostgreSQL.
Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Database for PostgreSQL pomocí identit definovaných v MICROSOFT Entra ID. Pomocí ověřování Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoft v centrálním umístění, což zjednodušuje správu oprávnění. Další informace najdete v tématu Ověřování Microsoft Entra pomocí služby Azure Database for PostgreSQL.
Ověřování PostgreSQL používá účty uložené v PostgreSQL. Pokud se rozhodnete používat hesla jako přihlašovací údaje pro účty, jsou tyto přihlašovací údaje uloženy v user tabulce. Vzhledem k tomu, že tato hesla jsou uložená v PostgreSQL, musíte spravovat rotaci hesel sami.
Tento článek předpokládá, že máte zkušenosti s vývojem pomocí Pythonu, ale začínáte pracovat se službou Azure Database for PostgreSQL.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Flexibilní instance serveru Azure Database for PostgreSQL. Pokud chcete vytvořit instanci flexibilního serveru Azure Database for PostgreSQL, přečtěte si článek Vytvoření služby Azure Database for PostgreSQL.
- Python 3.8+.
- Nejnovější instalační balíček pro pip.
Přidejte pravidla brány firewall pro klientskou pracovní stanici
- Pokud jste vytvořili instanci flexibilního serveru Azure Database for PostgreSQL s privátním přístupem (integrace virtuální sítě), musíte se k serveru připojit z prostředku ve stejné virtuální síti jako váš server. Můžete vytvořit virtuální počítač a přidat ho do virtuální sítě vytvořené pomocí instance flexibilního serveru Azure Database for PostgreSQL. Podívejte se na Síťování.
- Pokud jste vytvořili instanci flexibilního serveru Azure Database for PostgreSQL s veřejným přístupem (povolené IP adresy), můžete místní IP adresu přidat do seznamu pravidel brány firewall na vašem serveru. Podívejte se na Síťování.
Konfigurace integrace Microsoft Entra na serveru (jenom bez hesla)
Pokud postupujete podle kroků pro ověřování bez hesla, musí být pro vaši instanci serveru nakonfigurované ověřování Microsoft Entra a musíte být v instanci serveru přiřazeni jako správce Microsoft Entra. Postupujte podle pokynů v části Konfigurace integrace Microsoft Entra a ujistěte se, že je nakonfigurované ověřování Microsoft Entra a že jste v instanci serveru přiřazeni jako správce Microsoft Entra.
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 knihovnu azure-identity , která poskytuje podporu ověřování tokenů Microsoft Entra napříč sadou Azure SDK.
# Use the interpreter-bound pip to ensure installs go into the active venv/interpreter
python -m pip install --upgrade pip
python -m pip install azure-identity azure-keyvault-secrets
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 serveru.
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 bez hesla:
azure-identity,azure-keyvault-secrets(pokud používáte Key Vault) - Příklad hesla:
psycopg(doporučeno:python -m pip install "psycopg[binary]")
Volitelné: Vytvořte s requirements.txt těmito položkami a nainstalujte python -m pip install -r requirements.txt je pro reprodukovatelné instalace.
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 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_uriZískejte informace o připojení k databázi.
- Na webu Azure Portal vyhledejte a vyberte název instance flexibilního serveru Azure Database for PostgreSQL.
- Na stránce Přehled serveru zkopírujte plně kvalifikovaný název serveru. Plně kvalifikovaný .
- V nabídce vlevo v části Zabezpečení vyberte Ověřování. Ujistěte se, že je váš účet uvedený v části Microsoft Entra Admins. Pokud tomu tak není, proveďte kroky v části Konfigurace integrace Microsoft Entra na serveru (jenom bez hesla).
Nastavení proměnných prostředí pro elementy URI spojení:
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=requirePřihlaste se k Azure na své pracovní stanici. Můžete se přihlásit pomocí Azure CLI, Azure PowerShellu nebo Azure Developer CLI.
Ověřovací kód používá
DefaultAzureCredentialk ověření pomocí ID Microsoft Entra a získání tokenu, který umožňuje provádět operace na instanci serveru.DefaultAzureCredentialpodporuje řetězec typů autentizačních údajů. Mezi podporované přihlašovací údaje patří přihlašovací údaje, které jste přihlášeni k vývojářským nástrojům, jako jsou Azure CLI, Azure PowerShell nebo Azure Developer CLI.
Jak spustit příklady Pythonu
Pro každý příklad kódu v tomto článku:
Vytvořte nový soubor v textovém editoru.
Přidejte do souboru příklad kódu.
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.
Ve složce projektu zadejte
pythonnásledovaný názvem souboru, napříkladpython postgres-insert.py.
Vytvoření tabulky a vložení dat
Následující příklad kódu se připojí k flexibilní serverové databázi Azure Database for PostgreSQL pomocí psycopg.connect funkce 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í k flexibilní serverové databázi Azure Database for PostgreSQL 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í k databázi flexibilního serveru Azure Database for PostgreSQL a pomocí příkazu SQL UPDATE aktualizuje data pomocí příkazu cursor.execute.
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()
Odstranění dat
Následující příklad kódu se připojí k databázi flexibilního serveru Azure Database for PostgreSQL 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()
Související obsah
- Rychlý start: Použití Javy a JDBC se službou Azure Database for PostgreSQL
- Rychlý start: Použití .NET (C#) k připojení a dotazování dat ve službě Azure Database for PostgreSQL
- Rychlý start: Připojení a dotazování dat ve službě Azure Database for PostgreSQL pomocí jazyka Go
- Rychlý start: Použití PHP k připojení a dotazování dat ve službě Azure Database for PostgreSQL
- Rychlý start: Připojení a dotazování pomocí Azure CLI pomocí Azure Database for PostgreSQL
- Rychlý start: Import dat ze služby Azure Database for PostgreSQL v Power BI