Guida introduttiva: Usare Python per connettersi ed eseguire query sui dati in Database di Azure per PostgreSQL - Server flessibile

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

In questa guida introduttiva ci si connette a un'istanza del server flessibile Database di Azure per PostgreSQL usando Python. È quindi possibile usare istruzioni SQL per eseguire query, inserire, aggiornare ed eliminare dati nel database dalle piattaforme Mac, Ubuntu Linux e Windows.

Questo articolo presuppone che si abbia familiarità con lo sviluppo con Python, ma non si ha familiarità con Database di Azure per PostgreSQL server flessibile.

Prerequisiti

Preparazione della workstation client

Installare le librerie di Python per PostgreSQL

Il modulo psycopg2 consente la connessione e l'esecuzione di query su un database PostgreSQL ed è disponibile come pacchetto wheel di Linux, macOS o Windows. Installare la versione binaria del modulo, incluse tutte le dipendenze.

Per installare psycopg2, aprire un terminale o un prompt dei comandi ed eseguire il comando pip install psycopg2.

Recuperare le informazioni di connessione al database SQL

Connessione a un'istanza del server flessibile Database di Azure per PostgreSQL richiede il nome completo del server e le credenziali di accesso. È possibile ottenere queste informazioni nel portale di Azure.

  1. Nella portale di Azure cercare e selezionare il nome del server flessibile Database di Azure per PostgreSQL.

  2. Nella pagina Panoramica del server, copiare il valore dei campi Nome server (completo) e Nome utente amministratore. Il nome completo del server è sempre nel formato< my-server-name.postgres.database.azure.com>.

    È necessaria anche la password dell'amministratore. Se la password è stata dimenticata, è possibile reimpostarla nella pagina di panoramica.

Come eseguire gli esempi Python

Per ogni esempio di codice in questo articolo, eseguire queste operazioni.

  1. Creare un nuovo file in un editor di testo.

  2. Aggiungere l'esempio di codice al file. Nel codice sostituire:

    • <server-name> e <admin-username> con i valori copiati dal portale di Azure.
    • <admin-password> con la password del server.
    • <database-name>con il nome del database del server flessibile Database di Azure per PostgreSQL. Un database predefinito denominato postgres è stato creato automaticamente al momento della creazione del server. È possibile rinominare questo database o crearne uno nuovo usando i comandi di SQL.
  3. Salvare il file nella cartella del progetto con un'estensione . py, ad esempio postgres-insert.py. Per Windows, verificare che la codifica UTF-8 sia selezionata quando si salva il file.

  4. Per eseguire il file, passare alla cartella del progetto in un'interfaccia della riga di comando e digitare python seguito dal nome file, ad esempio python postgres-insert.py.

Creare una tabella e inserire i dati

L'esempio di codice seguente si connette al database del server flessibile Database di Azure per PostgreSQL usando la funzione psycopg2.connect e carica i dati con un'istruzione SQL IN edizione Standard RT. La funzione cursor.execute esegue la query SL sul 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()

Quando il codice viene eseguito in modo corretto, genera l'output seguente:

Command-line output

Leggere i dati

L'esempio di codice seguente si connette al database del server flessibile Database di Azure per PostgreSQL e usa cursor.execute con l'istruzione SQL edizione Standard LECT per leggere i dati. Questa funzione accetta una query e restituisce un set di risultati su cui eseguire l'iterazione usando 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()

Aggiornamento dei dati

L'esempio di codice seguente si connette al database del server flessibile Database di Azure per PostgreSQL e usa cursor.execute con l'istruzione SQL UPDATE per aggiornare i dati.

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

Eliminare dati

L'esempio di codice seguente si connette al database del server flessibile Database di Azure per PostgreSQL e usa cursor.execute con l'istruzione SQL DELETE per eliminare un elemento di inventario inserito in precedenza.

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

Passaggi successivi