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
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een exemplaar van een flexibele Azure Database for PostgreSQL-server. Als u een exemplaar van een flexibele Azure Database for PostgreSQL-server wilt maken, raadpleegt u Een Azure Database for PostgreSQL - Flexible Server-exemplaar maken met behulp van De Azure-portal.
- Python 2.7 of 3.6+.
- Nieuwste PIP-pakketinstallatieprogramma.
Uw clientwerkstation voorbereiden
- Als u uw exemplaar van flexibele Azure Database for PostgreSQL-server hebt gemaakt met privétoegang (VNet-integratie), moet u verbinding maken met uw server vanuit een resource binnen hetzelfde VNet als uw server. U kunt een virtuele machine maken en deze toevoegen aan het VNet dat is gemaakt met uw flexibele Azure Database for PostgreSQL-serverexemplaren. Zie Virtueel netwerk voor Azure Database for PostgreSQL - Flexible Server maken en beheren met behulp van de Azure CLI.
- Als u uw flexibele Server-exemplaar van Azure Database for PostgreSQL hebt gemaakt met openbare toegang (toegestane IP-adressen), kunt u uw lokale IP-adres toevoegen aan de lijst met firewallregels op uw server. Zie Firewallregels voor Azure Database for PostgreSQL - Flexible Server maken en beheren met behulp van de Azure CLI.
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.
Zoek en selecteer in Azure Portal de naam van uw flexibele Azure Database for PostgreSQL-server.
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:
Maak een nieuw bestand in een teksteditor.
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.
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.
Als u het bestand wilt uitvoeren, gaat u naar uw projectmap in een opdrachtregelinterface en typt u
python
gevolgd door de bestandsnaam, bijvoorbeeldpython 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:
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()