Database di Azure per PostgreSQL: usare Python per connettersi ai dati ed eseguire queryAzure Database for PostgreSQL: Use Python to connect and query data

Questa guida introduttiva illustra come usare Python per connettersi a un database di Azure per PostgreSQL.This quickstart demonstrates how to use Python to connect to an Azure Database for PostgreSQL. Descrive anche come usare istruzioni SQL per eseguire query e inserire, aggiornare ed eliminare dati nel database dalle piattaforme macOS, Ubuntu Linux e Windows.It also demonstrates how to use SQL statements to query, insert, update, and delete data in the database from macOS, Ubuntu Linux, and Windows platforms. Le procedure descritte in questo articolo presuppongono che si abbia familiarità con lo sviluppo con Python, ma non con Database di Azure per PostgreSQL.The steps in this article assume that you are familiar with developing using Python and are new to working with Azure Database for PostgreSQL.

PrerequisitiPrerequisites

Questa guida introduttiva usa le risorse create in una delle guide seguenti come punto di partenza:This quickstart uses the resources created in either of these guides as a starting point:

Altri elementi necessari:You also need:

  • Python installatopython installed
  • Pacchetto pip installato. È già installato se si usano i file binari Python 2 (>=2.7.9) o Python 3 (>=3.4) scaricati da python.org.pip package installed (pip is already installed if you're working with Python 2 >=2.7.9 or Python 3 >=3.4 binaries downloaded from python.org.

Installare le raccolte di connessioni Python per PostgreSQLInstall the Python connection libraries for PostgreSQL

Installare il pacchetto psycopg2, che consente di connettersi ed eseguire query sul database.Install the psycopg2 package, which enables you to connect and query the database. psycopg2 è disponibile in PyPI sotto forma di pacchetti wheel per le piattaforme più comuni (Linux, OSX e Windows).psycopg2 is available on PyPI in the form of wheel packages for the most common platforms (Linux, OSX, Windows). Usare pip install per ottenere la versione binaria del modulo con tutte le dipendenze.Use pip install to get the binary version of the module including all the dependencies.

  1. Nel computer in uso avviare un'interfaccia della riga di comando:On your own computer, launch a command-line interface:
    • In Linux avviare la shell Bash.On Linux, launch the Bash shell.
    • In macOS avviare il terminale.On macOS, launch the Terminal.
    • In Windows avviare il prompt dei comandi dal menu Start.On Windows, launch the Command Prompt from the Start Menu.
  2. Assicurarsi di usare la versione più aggiornata di pip eseguendo un comando come questo:Ensure that you are using the most current version of pip by running a command such as:

    pip install -U pip
    
  3. Eseguire questo comando per installare il pacchetto psycopg2:Run the following command to install the psycopg2 package:

    pip install psycopg2
    

Ottenere informazioni di connessioneGet connection information

Ottenere le informazioni di connessione necessarie per connettersi al database di Azure per PostgreSQL.Get the connection information needed to connect to the Azure Database for PostgreSQL. Sono necessari il nome del server completo e le credenziali di accesso.You need the fully qualified server name and login credentials.

  1. Accedere al Portale di Azure.Log in to the Azure portal.
  2. Scegliere Tutte le risorse dal menu a sinistra nel portale di Azure e cercare mypgserver-20170401, ossia il server creato.From the left-hand menu in Azure portal, click All resources and search for mypgserver-20170401 (the server you created).
  3. Fare clic sul nome del server mypgserver-20170401.Click the server name mypgserver-20170401.
  4. Selezionare la pagina Panoramica del server e prendere nota dei valori riportati in Nome server e Nome di accesso dell'amministratore server.Select the server's Overview page, and then make a note of the Server name and Server admin login name. Database di Azure per PostgreSQL - Accesso dell'amministratore del serverAzure Database for PostgreSQL - Server Admin Login
  5. Se si dimenticano le informazioni di accesso per il server, passare alla pagina Panoramica per visualizzare il nome di accesso dell'amministratore del server e, se necessario, reimpostare la password.If you forget your server login information, navigate to the Overview page to view the Server admin login name and, if necessary, reset the password.

Come eseguire codice PythonHow to run Python code

Questo articolo contiene in totale quattro esempi di codice, ognuno dei quali esegue una funzione specifica.This article contains a total of four code samples, each of which performs a specific function. Le istruzioni seguenti indicano come creare un file di testo, inserire un blocco di codice e quindi salvare il file per poterlo eseguire in un secondo momento.The following instructions indicate how to create a text file, insert a code block, and then save the file so that you can run it later. Assicurarsi di creare quattro file separati, uno per ogni blocco di codice.Be sure to create four separate files, one for each code block.

  • Usando l'editor di testo preferito, creare un nuovo file.Using your favorite text editor, create a new file.
  • Copiare e incollare uno degli esempi di codice delle sezioni seguenti nel file di testo.Copy and paste one of the code samples in the following sections into the text file. Sostituire i parametri host, dbname, user e password con i valori specificati al momento della creazione del server e del database.Replace the host, dbname, user, and password parameters with the values that you specified when you created the server and database.
  • Salvare il file con l'estensione py (ad esempio, postgres.py) nella cartella del progetto.Save the file with the .py extension (for example postgres.py) into your project folder. Se si usa il sistema operativo Windows, quando si salva il file assicurarsi di selezionare la codifica UTF-8.If you are running on Windows, be sure to select UTF-8 encoding when saving the file.
  • Avviare il prompt dei comandi, Terminal o la shell Bash e quindi passare alla cartella del progetto, ad esempio: cd postgres.Launch the Command Prompt, Terminal, or Bash shell and then change the directory to your project folder, for example cd postgres.
  • Per eseguire il codice, digitare il comando Python seguito dal nome del file, ad esempio Python postgres.py.To run the code, type the Python command followed by the file name, for example Python postgres.py.

Nota

A partire da Python versione 3, è possibile che venga visualizzato l'errore SyntaxError: Missing parentheses in call to 'print' durante l'esecuzione dei blocchi di codice seguente: in tal caso, sostituire ogni chiamata al comando print "string" con una chiamata di funzione usando le parentesi, ad esempio print("string").Starting in Python version 3, you may see the error SyntaxError: Missing parentheses in call to 'print' when running the following code blocks: If that happens, replace each call to the command print "string" with a function call using parenthesis, such as print("string").

Connettersi, creare tabelle e inserire datiConnect, create table, and insert data

Usare il codice seguente per connettersi e caricare i dati usando la funzione psycopg2.connect con un'istruzione SQL INSERT.Use the following code to connect and load the data using psycopg2.connect function with INSERT SQL statement. La funzione cursor.execute viene usata per eseguire la query SQL sul database PostgreSQL.The cursor.execute function is used to execute the SQL query against PostgreSQL database. Sostituire i parametri host, dbname, user e password con i valori specificati al momento della creazione del server e del database.Replace the host, dbname, user, and password parameters with the values that you specified when you created the server and database.

import psycopg2

# Update connection string information obtained from the portal
host = "mypgserver-20170401.postgres.database.azure.com"
user = "mylogin@mypgserver-20170401"
dbname = "mypgsqldb"
password = "<server_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 table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print "Finished creating table"

# Insert some data into 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"

# Cleanup
conn.commit()
cursor.close()
conn.close()

Al termine dell'esecuzione del codice, viene visualizzato l'output seguente:After the code runs successfully, the output appears as follows:

Output della riga di comando

Leggere i datiRead data

Usare il codice seguente per leggere i dati inseriti usando la funzione cursor.execute con un'istruzione SQL SELECT.Use the following code to read the data inserted using cursor.execute function with SELECT SQL statement. Questa funzione accetta una query e restituisce un set di risultati su cui è possibile eseguire l'iterazione tramite cursor.fetchall().This function accepts a query and returns a result set that can be iterated over with the use of cursor.fetchall(). Sostituire i parametri host, dbname, user e password con i valori specificati al momento della creazione del server e del database.Replace the host, dbname, user, and password parameters with the values that you specified when you created the server and database.

import psycopg2

# Update connection string information obtained from the portal
host = "mypgserver-20170401.postgres.database.azure.com"
user = "mylogin@mypgserver-20170401"
dbname = "mypgsqldb"
password = "<server_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()

Aggiornare i datiUpdate data

Usare il codice seguente per aggiornare la riga d'inventario inserita in precedenza tramite la funzione cursor.execute con l'istruzione SQL UPDATE.Use the following code to update the inventory row that you previously inserted using cursor.execute function with UPDATE SQL statement. Sostituire i parametri host, dbname, user e password con i valori specificati al momento della creazione del server e del database.Replace the host, dbname, user, and password parameters with the values that you specified when you created the server and database.

import psycopg2

# Update connection string information obtained from the portal
host = "mypgserver-20170401.postgres.database.azure.com"
user = "mylogin@mypgserver-20170401"
dbname = "mypgsqldb"
password = "<server_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 i datiDelete data

Usare il codice seguente per eliminare un articolo di magazzino inserito in precedenza tramite la funzione cursor.execute con l'istruzione SQL DELETE.Use the following code to delete an inventory item that you previously inserted using cursor.execute function with DELETE SQL statement. Sostituire i parametri host, dbname, user e password con i valori specificati al momento della creazione del server e del database.Replace the host, dbname, user, and password parameters with the values that you specified when you created the server and database.

import psycopg2

# Update connection string information obtained from the portal
host = "mypgserver-20170401.postgres.database.azure.com"
user = "mylogin@mypgserver-20170401"
dbname = "mypgsqldb"
password = "<server_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 successiviNext steps