Quickstart: Python gebruiken om verbinding te maken en query's uit te voeren op gegevens in Azure Database for PostgreSQL - Flexible Server

VAN TOEPASSING OP: Azure Database for PostgreSQL - Flexibele server

In deze quickstart maakt u verbinding met een exemplaar van een flexibele Azure Database for PostgreSQL-server met behulp van Python. U gebruikt vervolgens SQL-instructies om gegevens op te vragen, in te voegen, bij te werken en te verwijderen in de database vanaf Mac-, Ubuntu Linux- en Windows-platforms.

In dit artikel wordt ervan uitgegaan dat u bekend bent met het ontwikkelen met Behulp van Python, maar u bent nog niet bekend met het werken met flexibele Azure Database for PostgreSQL-server.

Vereisten

Uw clientwerkstation voorbereiden

De Python-bibliotheken voor PostgreSQL installeren

Met de module psycopg2 kunt u verbinding maken met en query's uitvoeren op een PostgreSQL-database. Deze module is beschikbaar als wheel-pakket voor Linux, macOS of Windows. Installeer de binaire versie van de module, inclusief alle afhankelijkheden.

Als u psycopg2 wilt installeren, opent u een terminal of opdrachtprompt en voert u de opdracht pip install psycopg2 uit.

De verbindingsgegevens voor de database ophalen

Verbinding maken naar een flexibele serverinstantie van Azure Database for PostgreSQL zijn de volledig gekwalificeerde servernaam en aanmeldingsreferenties vereist. U kunt deze informatie ophalen uit Azure Portal.

  1. Zoek en selecteer in Azure Portal de naam van uw flexibele Azure Database for PostgreSQL-server.

  2. Kopieer op de pagina Overzicht van de server de volledig gekwalificeerde servernaam en de gebruikersnaam met beheerdersrechten. De volledig gekwalificeerde servernaam is altijd van de vorm <my-server-name.postgres.database.azure.com>.

    U hebt ook uw beheerderswachtwoord nodig. Als u dit vergeten bent, kunt u het opnieuw instellen op de overzichtspagina.

De Python-voorbeelden uitvoeren

Voor elk codevoorbeeld in dit artikel:

  1. Maak een nieuw bestand in een teksteditor.

  2. Voeg het codevoorbeeld toe aan het bestand. Vervang in de code:

    • <server-name> en <admin-username> door de waarden die u hebt gekopieerd uit Azure Portal.
    • <admin-password> door uw serverwachtwoord.
    • <database-name> met de naam van uw flexibele Azure Database for PostgreSQL-serverdatabase. Er is automatisch een standaarddatabase met de naam postgres gemaakt toen u uw server maakte. U kunt de naam van de database wijzigen of een nieuwe database maken met behulp van SQL-opdrachten.
  3. Sla het bestand op in uw projectmap met een .py-extensie, zoals postgres-insert.py. In Windows moet u ervoor zorgen dat UTF-8-codering is geselecteerd wanneer u het bestand opslaat.

  4. Als u het bestand wilt uitvoeren, gaat u naar uw projectmap in een opdrachtregelinterface en typt u python gevolgd door de bestandsnaam, bijvoorbeeld python postgres-insert.py.

Een tabel maken en gegevens invoegen

Het volgende codevoorbeeld maakt verbinding met uw flexibele Azure Database for PostgreSQL-serverdatabase met behulp van de functie psycopg2.connect en laadt gegevens met een SQL INSERT-instructie . Met de functie cursor.execute wordt de SQL-query uitgevoerd op de database.

import psycopg2

# Update connection string information 
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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()

Wanneer de code wordt uitgevoerd, wordt de volgende uitvoer gegenereerd:

Command-line output

Gegevens lezen

Het volgende codevoorbeeld maakt verbinding met uw flexibele Azure Database for PostgreSQL-serverdatabase en gebruikt cursor.execute met de SQL SELECT-instructie om gegevens te lezen. Deze functie accepteert een query en retourneert een resultatenset om opnieuw te herhalen met behulp van cursor.fetchall()

import psycopg2

# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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()

Gegevens bijwerken

Het volgende codevoorbeeld maakt verbinding met uw flexibele Azure Database for PostgreSQL-serverdatabase en gebruikt cursor.execute met de SQL UPDATE-instructie om gegevens bij te werken.

import psycopg2

# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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()

Gegevens verwijderen

Het volgende codevoorbeeld maakt verbinding met uw flexibele Azure Database for PostgreSQL-serverdatabase en gebruikt cursor.execute met de SQL DELETE-instructie om een inventarisitem te verwijderen dat u eerder hebt ingevoegd.

import psycopg2

# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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()

Volgende stappen