Schnellstart: Verwenden von Python zum Herstellen einer Verbindung mit Azure Database for PostgreSQL Flexible Server sowie zum Abfragen von Daten

GILT FÜR: Azure Database for PostgreSQL – Flexible Server

In dieser Schnellstartanleitung stellen Sie eine Verbindung mit einer flexiblen Azure-Datenbank für PostgreSQL-Serverinstanz mithilfe von Python her. Anschließend verwenden Sie SQL-Anweisungen, um Daten in der Datenbank über Mac-, Ubuntu Linux- und Windows-Plattformen abzufragen, einzufügen, zu aktualisieren und zu löschen.

In diesem Artikel wird davon ausgegangen, dass Sie mit der Entwicklung mit Python vertraut sind, aber Sie sind neu bei der Arbeit mit Azure Database for PostgreSQL flexible Server.

Voraussetzungen

Vorbereiten der Clientarbeitsstation

Installieren der Python-Bibliotheken für PostgreSQL

Das Modul psycopg2 ermöglicht das Herstellen einer Verbindung mit einer PostgreSQL-Datenbank sowie das Abfragen von Daten aus dieser Datenbank und ist als wheel-Paket für Linux, macOS oder Windows verfügbar. Installieren Sie die Binärversion des Moduls mit allen Abhängigkeiten.

Öffnen Sie zum Installieren von psycopg2 ein Terminal oder eine Eingabeaufforderung, und führen Sie den Befehl pip install psycopg2 aus.

Abrufen von Datenbankverbindungsinformationen

Verbinden für eine flexible Serverinstanz von Azure Database für PostgreSQL erfordert den vollqualifizierten Servernamen und Anmeldeinformationen. Diese Informationen finden Sie im Azure-Portal.

  1. Suchen Sie in der Azure-Portal nach Ihrer Azure-Datenbank für den flexiblen Servernamen für PostgreSQL, und wählen Sie sie aus.

  2. Kopieren Sie auf der Übersichtsseite des Servers unter Servername den vollqualifizierten Servernamen und unter Administratorbenutzername den Administratorbenutzernamen. Der vollqualifizierte Servername hat immer das Format <Servername>.postgres.database.azure.com.

    Darüber hinaus benötigen Sie Ihr Administratorkennwort. Sollten Sie es vergessen, können Sie es auf der Übersichtsseite zurücksetzen.

Ausführen der Python-Beispiele

Führen Sie für jedes Codebeispiel in diesem Artikel die folgenden Schritte aus:

  1. Erstellen Sie eine neue Datei in einem Text-Editor.

  2. Fügen Sie der Datei das Codebeispiel hinzu. Ersetzen Sie im Code Folgendes:

    • <server-name> und <admin-username> durch die Werte, die Sie aus dem Azure-Portal kopiert haben.
    • <admin-password> durch Ihr Serverkennwort.
    • <database-name> mit dem Namen Ihrer Azure-Datenbank für flexible Serverdatenbank für PostgreSQL. Bei der Servererstellung wurde automatisch eine Standarddatenbank namens postgres erstellt. Sie können diese Datenbank umbenennen oder mithilfe von SQL-Befehlen eine neue Datenbank erstellen.
  3. Speichern Sie die Datei mit der Erweiterung .py in Ihrem Projektordner (Beispiel: postgres-insert.py). Achten Sie unter Windows darauf, dass beim Speichern die UTF-8-Codierung ausgewählt ist.

  4. Wechseln Sie zum Ausführen der Datei mithilfe einer Befehlszeilenschnittstelle zu Ihrem Projektordner, und geben Sie python sowie den Dateinamen ein (Beispiel: python postgres-insert.py).

Erstellen einer Tabelle und Einfügen von Daten

Im folgenden Codebeispiel wird mithilfe der Psycopg2.connect-Funktion eine Verbindung mit Ihrer flexiblen Azure-Datenbank für PostgreSQL hergestellt und Daten mit einer SQL INSERT-Anweisung geladen. Die Funktion cursor.execute führt die SQL-Abfrage für die Datenbank aus.

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()

Nach erfolgreicher Ausführung generiert der Code die folgende Ausgabe:

Command-line output

Lesen von Daten

Im folgenden Codebeispiel wird eine Verbindung mit Ihrer flexiblen Azure-Datenbank für PostgreSQL hergestellt und cursor.execute mit der SQL SELECT-Anweisung zum Lesen von Daten verwendet. Diese Funktion akzeptiert eine Abfrage und gibt ein Resultset zurück, das mithilfe von „cursor.fetchall()“ durchlaufen werden kann.

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()

Aktualisieren von Daten

Im folgenden Codebeispiel wird eine Verbindung mit Ihrer flexiblen Azure-Datenbank für PostgreSQL hergestellt und cursor.execute mit der SQL UPDATE-Anweisung verwendet, um Daten zu aktualisieren.

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()

Löschen von Daten

Im folgenden Codebeispiel wird eine Verbindung mit Ihrer flexiblen Azure-Datenbank für PostgreSQL hergestellt und mit der SQL DELETE-Anweisung "cursor.execute" verwendet, um ein zuvor eingefügtes Bestandselement zu löschen.

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()

Nächste Schritte