Snabbstart: Använda Python för att ansluta och fråga efter data i Azure Database for PostgreSQL – flexibel server
GÄLLER FÖR: Azure Database for PostgreSQL – flexibel server
I den här snabbstarten ansluter du till en flexibel Azure Database for PostgreSQL-serverinstans med hjälp av Python. Sedan använder du SQL-instruktioner för att fråga, infoga, uppdatera och ta bort data i databasen från Mac-, Ubuntu Linux- och Windows-plattformar.
Den här artikeln förutsätter att du är bekant med att utveckla med Python, men du är nybörjare på att arbeta med Azure Database for PostgreSQL – flexibel server.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En flexibel Azure Database for PostgreSQL-serverinstans. Om du vill skapa en flexibel Azure Database for PostgreSQL-serverinstans läser du Skapa en Azure Database for PostgreSQL – flexibel serverinstans med Hjälp av Azure-portalen.
- Python 2.7 eller 3.6+.
- Senaste pip-paketinstallationsprogrammet .
Förbereda klientarbetsstationen
- Om du har skapat en flexibel Azure Database for PostgreSQL-serverinstans med privat åtkomst (VNet-integrering) måste du ansluta till servern från en resurs inom samma virtuella nätverk som servern. Du kan skapa en virtuell dator och lägga till den i det virtuella nätverk som skapats med din flexibla Azure Database for PostgreSQL-serverinstans. Se Skapa och hantera azure database for PostgreSQL – flexibelt servernätverk med Azure CLI.
- Om du har skapat din flexibla Azure Database for PostgreSQL-serverinstans med offentlig åtkomst (tillåtna IP-adresser) kan du lägga till din lokala IP-adress i listan över brandväggsregler på servern. Se Skapa och hantera Azure Database for PostgreSQL – brandväggsregler för flexibel server med hjälp av Azure CLI.
Installera Python-biblioteken för PostgreSQL
Psycopg2-modulen gör det möjligt att ansluta till och köra frågor mot en PostgreSQL-databas och är tillgänglig som ett Linux-, macOS- eller Windows-hjulpaket. Installera den binära versionen av modulen, inklusive alla beroenden.
Om du vill installera psycopg2
öppnar du en terminal eller kommandotolk och kör kommandot pip install psycopg2
.
Hämta information om databasanslutning
Anslut till en flexibel Azure Database for PostgreSQL-serverinstans kräver det fullständigt kvalificerade servernamnet och inloggningsuppgifterna. Du kan hämta den här informationen från Azure-portalen.
I Azure-portalen söker du efter och väljer ditt flexibla servernamn för Azure Database for PostgreSQL.
På serverns översiktssidakopierar du det fullständigt kvalificerade servernamnet och administratörsanvändarnamnet. Det fullständigt kvalificerade servernamnet är alltid av formatet <my-server-name.postgres.database.azure.com>.
Du behöver också ditt administratörslösenord. Om du glömmer det kan du återställa det från översiktssidan.
Så här kör du Python-exemplen
För varje kodexempel i den här artikeln:
Skapa en ny fil i en textredigerare.
Lägg till kodexemplet i filen. I koden ersätter du:
<server-name>
och<admin-username>
med de värden som du kopierade från Azure-portalen.<admin-password>
med serverlösenordet.<database-name>
med namnet på din flexibla Azure Database for PostgreSQL-serverdatabas. En standarddatabas med namnet postgres skapades automatiskt när du skapade servern. Du kan byta namn på databasen eller skapa en ny databas med hjälp av SQL-kommandon.
Spara filen i projektmappen med filnamnstillägget .py , till exempel postgres-insert.py. För Windows kontrollerar du att UTF-8-kodning är markerat när du sparar filen.
Om du vill köra filen ändrar du till projektmappen i ett kommandoradsgränssnitt och skriver
python
följt av filnamnet, till exempelpython postgres-insert.py
.
Skapa en tabell och infoga data
Följande kodexempel ansluter till din flexibla Azure Database for PostgreSQL-serverdatabas med hjälp av funktionen psycopg2.connect och läser in data med en SQL INSERT-instruktion . Funktionen cursor.execute kör SQL-frågan mot databasen.
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()
När koden körs genererar den följande utdata:
Läsa data
Följande kodexempel ansluter till din flexibla serverdatabas i Azure Database for PostgreSQL och använder cursor.execute med SQL SELECT-instruktionen för att läsa data. Den här funktionen accepterar en fråga och returnerar en resultatuppsättning som itererar över med hjälp av 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()
Uppdatera data
Följande kodexempel ansluter till din flexibla serverdatabas i Azure Database for PostgreSQL och använder cursor.execute med SQL UPDATE-instruktionen för att uppdatera data.
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()
Ta bort data
Följande kodexempel ansluter till din flexibla serverdatabas i Azure Database for PostgreSQL och använder cursor.execute med SQL DELETE-instruktionen för att ta bort ett lagerobjekt som du tidigare infogade.
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()