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 unter Verwendung von Python eine Verbindung mit einer Azure Database for PostgreSQL Flexible Server-Instanz 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 Python-Entwicklung vertraut sind, aber noch keine Erfahrung mit Azure Database for PostgreSQL Flexible Server haben.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine Instanz von Azure Database for PostgreSQL Flexible Server. Wie Sie einen flexiblen Server erstellen, erfahren Sie unter Erstellen einer flexiblen Azure Database for PostgreSQL Flexible Server-Instanz im Azure-Portal.
- Python 2.7 bzw. 3.6 oder höher
- Aktuelles pip-Paketinstallationsprogramm.
Vorbereiten der Clientarbeitsstation
- Wenn Sie Ihre Flexible Server-Instanz mit Privater Zugriff (VNET-Integration) erstellt haben, müssen Sie eine Verbindung mit Ihrem Server über eine Ressource innerhalb desselben virtuellen Netzwerks herstellen. Sie können einen virtuellen Computer erstellen und dem VNET hinzufügen, das mit Ihrer Flexible Server-Instanz erstellt wurde. Weitere Informationen finden Sie unter Erstellen und Verwalten von virtuellen Netzwerken für Azure Database for PostgreSQL Flexible Server mit der Azure CLI.
- Wenn Sie Ihre Flexible Server-Instanz mit Öffentlicher Zugriff (zulässige IP-Adressen) erstellt haben, können Sie die lokale IP-Adresse der Liste der Firewallregeln auf Ihrem Server hinzufügen. Weitere Informationen finden Sie unter Erstellen und Verwalten von Firewallregeln für Azure Database for PostgreSQL Flexible Server mithilfe der Azure CLI.
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
Für die Verbindungsherstellung mit einer Azure Database for PostgreSQL Flexible Server-Instanz sind der vollqualifizierte Servername und Anmeldeinformationen erforderlich. Diese Informationen finden Sie im Azure-Portal.
Suchen Sie im Azure-Portal nach dem Namen der Flexible Server-Instanz und wählen Sie ihn aus.
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:
Erstellen Sie eine neue Datei in einem Text-Editor.
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>
durch den Namen Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz. 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.
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.
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 Funktion psycopg2.connect eine Verbindung mit Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz hergestellt, und es werden Daten mithilfe einer INSERT-SQL-Anweisung geladen. Die Funktion cursor.execute führt die SQL-Abfrage für die Datenbank aus.
import psycopg2
# Update connection string information
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()
Nach erfolgreicher Ausführung generiert der Code die folgende Ausgabe:
Lesen von Daten
Im folgenden Codebeispiel wird eine Verbindung mit Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz hergestellt und cursor.execute mit der SQL-Anweisung SELECT verwendet, um Daten zu lesen. 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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()
Aktualisieren von Daten
Im folgenden Codebeispiel wird eine Verbindung mit Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz hergestellt und cursor.execute mit der SQL-Anweisung UPDATE verwendet, um Daten zu aktualisieren.
import psycopg2
# Update connection string information
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()
Löschen von Daten
Im folgenden Codebeispiel wird eine Verbindung mit Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz hergestellt und cursor.execute mit der SQL-Anweisung DELETE verwendet, um ein zuvor eingefügtes Bestandselement zu löschen.
import psycopg2
# Update connection string information
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()