Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku Szybki start nawiąż połączenie z wystąpieniem serwera elastycznego usługi Azure Database for PostgreSQL przy użyciu języka Python. Następnie użyjesz instrukcji SQL do wykonywania zapytań, wstawiania, aktualizowania i usuwania danych w bazie danych z platform macOS, Ubuntu Linux i Windows.
Kroki opisane w tym artykule obejmują dwie metody uwierzytelniania: uwierzytelnianie firmy Microsoft Entra i uwierzytelnianie PostgreSQL. Karta Bez hasła zawiera uwierzytelnianie firmy Microsoft Entra, a karta Hasło zawiera uwierzytelnianie PostgreSQL.
Uwierzytelnianie entra firmy Microsoft to mechanizm nawiązywania połączenia z usługą Azure Database for PostgreSQL przy użyciu tożsamości zdefiniowanych w identyfikatorze Entra firmy Microsoft. Dzięki uwierzytelnieniu firmy Microsoft Entra można zarządzać tożsamościami użytkowników bazy danych i innymi usługi firmy Microsoft w centralnej lokalizacji, co upraszcza zarządzanie uprawnieniami. Aby dowiedzieć się więcej, zobacz Uwierzytelnianie Microsoft Entra z Azure Database for PostgreSQL.
Uwierzytelnianie postgreSQL używa kont przechowywanych w usłudze PostgreSQL. Jeśli zdecydujesz się używać haseł jako poświadczeń dla kont, te poświadczenia są przechowywane w user tabeli. Ponieważ te hasła są przechowywane w usłudze PostgreSQL, musisz samodzielnie zarządzać rotacją haseł.
W tym artykule założono, że wiesz już, jak programować przy użyciu języka Python, ale dopiero zaczynasz pracę z usługą Azure Database for PostgreSQL.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL. Aby utworzyć elastyczne wystąpienie serwera Azure Database for PostgreSQL, zobacz Utwórz bazę danych Azure Database for PostgreSQL.
- Środowisko Python w wersji 3.8 lub nowszej.
- Najnowszy instalator pakietu .
Dodawanie reguł zapory dla stacji roboczej klienckiej
- Jeśli utworzono wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL z dostępem prywatnym (integracja z siecią wirtualną), musisz nawiązać połączenie z serwerem z zasobu w tej samej sieci wirtualnej co serwer. Możesz utworzyć maszynę wirtualną i dodać ją do sieci wirtualnej utworzonej przy użyciu elastycznego wystąpienia serwera usługi Azure Database for PostgreSQL. Zapoznaj się z tematem Sieciowanie.
- Jeśli utworzono wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL z dostępem publicznym (dozwolonymi adresami IP), możesz dodać lokalny adres IP do listy reguł zapory na serwerze. Zapoznaj się z tematem Sieciowanie.
Konfigurowanie integracji firmy Microsoft Entra na serwerze (tylko bez hasła)
Jeśli wykonasz kroki uwierzytelniania bez hasła, należy skonfigurować uwierzytelnianie entra firmy Microsoft dla wystąpienia serwera i musisz mieć przypisaną rolę administratora firmy Microsoft Entra w wystąpieniu serwera. Wykonaj kroki opisane w temacie Configure Microsoft Entra integration (Konfigurowanie integracji firmy Microsoft Entra), aby upewnić się, że uwierzytelnianie firmy Microsoft Entra jest skonfigurowane i że masz przypisaną rolę administratora firmy Microsoft Entra w wystąpieniu serwera.
przygotowywanie środowiska programistycznego
Przejdź do folderu, w którym chcesz uruchomić kod, i utwórz i aktywuj środowisko wirtualne. Środowisko wirtualne to samodzielny katalog dla określonej wersji języka Python oraz inne pakiety potrzebne dla tej aplikacji.
Uruchom następujące polecenia, aby utworzyć i aktywować środowisko wirtualne:
py -3 -m venv .venv
.venv\Scripts\activate
Instalowanie bibliotek języka Python
Zainstaluj biblioteki języka Python potrzebne do uruchomienia przykładów kodu.
Zainstaluj bibliotekę azure-identity , która zapewnia obsługę uwierzytelniania tokenów entra firmy Microsoft w zestawie 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
Dodawanie kodu uwierzytelniania
W tej sekcji dodasz kod uwierzytelniania do katalogu roboczego i wykonasz dodatkowe kroki wymagane do uwierzytelniania i autoryzacji z wystąpieniem serwera.
Przed dodaniem kodu uwierzytelniania upewnij się, że są zainstalowane wymagane pakiety dla każdego przykładu.
Wymagane pakiety (przykłady w tym artykule):
- Przykład bez hasła:
azure-identity,azure-keyvault-secrets(jeśli używasz usługi Key Vault) - Przykład hasła:
psycopg(zalecane:python -m pip install "psycopg[binary]")
Opcjonalnie: utwórz element requirements.txt z tymi wpisami i zainstaluj element z opcją python -m pip install -r requirements.txt w celu odtworzenia instalacji.
Skopiuj następujący kod do edytora i zapisz go w pliku o nazwie 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_uriUzyskaj informacje o połączeniu z bazą danych.
- W witrynie Azure Portal wyszukaj i wybierz nazwę wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
- Na stronie Przegląd serwera skopiuj w pełni kwalifikowaną nazwę serwera. W pełni kwalifikowana nazwa serwera jest zawsze nazwą<.>
- W menu po lewej stronie w obszarze Zabezpieczenia wybierz pozycję Uwierzytelnianie. Upewnij się, że Twoje konto znajduje się na liście w obszarze Administratorzy firmy Microsoft. Jeśli tak nie jest, wykonaj kroki opisane w temacie Konfigurowanie integracji firmy Microsoft Entra na serwerze (tylko bez hasła).
Ustaw zmienne środowiskowe dla elementów identyfikatora URI połączenia:
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=requireZaloguj się na platformie Azure na stacji roboczej. Możesz zalogować się przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub interfejsu wiersza polecenia dla deweloperów platformy Azure.
Kod uwierzytelniania używa
DefaultAzureCredentialmetody do uwierzytelniania za pomocą identyfikatora Entra firmy Microsoft i uzyskania tokenu, który autoryzuje Cię do wykonywania operacji na wystąpieniu serwera.DefaultAzureCredentialobsługuje łańcuch typów poświadczeń uwierzytelniania. Wśród obsługiwanych poświadczeń są poświadczenia, które logujesz się do narzędzi deweloperskich, takich jak interfejs wiersza polecenia platformy Azure, program Azure PowerShell lub interfejs wiersza polecenia dla deweloperów platformy Azure.
Jak uruchomić przykłady języka Python
Dla każdego przykładu kodu w tym artykule:
Utwórz nowy plik w edytorze tekstów.
Dodaj przykładowy kod do pliku.
Zapisz plik w folderze projektu przy użyciu rozszerzenia .py , takiego jak postgres-insert.py. W przypadku systemu Windows upewnij się, że podczas zapisywania pliku wybrano kodowanie UTF-8.
W folderze projektu wpisz
pythonnazwę pliku, na przykładpython postgres-insert.py.
Tworzenie tabeli i wstawianie danych
Poniższy przykład kodu łączy się z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL przy użyciu funkcji i ładuje dane za pomocą psycopg.connect instrukcji SQL INSERT . Funkcja cursor.execute wykonuje zapytanie SQL względem bazy danych.
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()
Po pomyślnym uruchomieniu kodu generuje następujące dane wyjściowe:
Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data
Odczyt danych
Poniższy przykład kodu łączy się z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL i używa instrukcji cursor.execute z instrukcją SQL SELECT w celu odczytu danych. Ta funkcja akceptuje zapytanie i zwraca zestaw wyników w celu iteracji przy użyciu funkcji 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()
Po pomyślnym uruchomieniu kodu generuje następujące dane wyjściowe:
Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)
Aktualizowanie danych
Poniższy przykład kodu nawiązuje połączenie z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL i używa polecenia cursor.execute z instrukcją SQL UPDATE w celu zaktualizowania danych.
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()
Usuwanie danych
Poniższy przykład kodu łączy się z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL i używa polecenia cursor.execute z instrukcją SQL DELETE , aby usunąć wcześniej wstawiony element spisu.
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()
Powiązana zawartość
- Szybki start: używanie języków Java i JDBC z usługą Azure Database for PostgreSQL
- Szybki start: nawiązywanie połączeń z danymi w usłudze Azure Database for PostgreSQL przy użyciu platformy .NET (C#)
- Szybki start: nawiązywanie połączeń i wykonywanie zapytań dotyczących danych w usłudze Azure Database for PostgreSQL przy użyciu języka Go
- Szybki start: nawiązywanie połączeń i wykonywanie zapytań dotyczących danych w usłudze Azure Database for PostgreSQL przy użyciu języka PHP
- Szybki start: nawiązywanie połączeń i wykonywanie zapytań przy użyciu interfejsu wiersza polecenia platformy Azure za pomocą usługi Azure Database for PostgreSQL
- Szybki start: importowanie danych z usługi Azure Database for PostgreSQL w usłudze Power BI