Inicio rápido: Uso de Python para conectarse y consultar datos en un servidor flexible de Azure Database for PostgreSQL

SE APLICA A: Azure Database for PostgreSQL: servidor flexible

En este inicio rápido, se conectará a una instancia de servidor flexible de Azure Database for PostgreSQL mediante Python. Puede usar instrucciones SQL para consultar, insertar, actualizar y eliminar datos de la base de datos en las plataformas Mac, Ubuntu Linux y Windows.

En este artículo se da por supuesto que está familiarizado con el desarrollo mediante Python, pero no está familiarizado con el servidor flexible de Azure Database for PostgreSQL.

Requisitos previos

Preparación de la estación de trabajo de cliente

Instalación de las bibliotecas de Python para PostgreSQL

El módulo psycopg2 permite conectarse a una base de datos de PostgreSQL y realizar consultas, y está disponible como un paquete de Linux, macOS o Windows wheel. Instale la versión binaria del módulo, incluidas todas las dependencias.

Para instalar psycopg2, abra un símbolo del sistema o de terminal y ejecute el comandopip install psycopg2.

Obtener información de conexión de base de datos

Conectar a una instancia de servidor flexible de Azure Database for PostgreSQL requiere el nombre completo del servidor y las credenciales de inicio de sesión. Puede obtener esta información en el Azure Portal.

  1. En Azure Portal, busque y seleccione el nombre del servidor flexible de Azure Database for PostgreSQL.

  2. En la página deInformación general del servidor, copie el nombre completo del Servidor y el Nombre del usuario administrador. El nombre completo del servidor siempre tiene el formato<nombreDeMiServidor>.postgres.database.azure.com.

    También necesitará la contraseña de administrador. Si la olvida, puede restablecerla desde la página de información general.

Cómo ejecutar los ejemplos de Python

Para cada ejemplo de código de este artículo:

  1. Cree un nuevo archivo en un editor de texto.

  2. Agregue el ejemplo de código al archivo. En el código, reemplace:

    • <server-name> y <admin-username> con los valores que copió del Azure Portal.
    • <admin-password> con la contraseña del servidor.
    • <database-name> con el nombre de la base de datos de servidor flexible de Azure Database for PostgreSQL. Se creará automáticamente una base de datos predeterminada denominada postgres al crear el servidor. Puede cambiar el nombre de la base de datos o crear una nueva mediante comandos SQL.
  3. Guarde el archivo en la carpeta del proyecto con una extensión .py, como postgres-insert.py. En Windows, asegúrese de que la codificación UTF-8 está seleccionada al guardar el archivo.

  4. Para ejecutar el archivo, cambie a la carpeta del proyecto en una interfaz de línea de comandos y escriba pythonseguido del nombre de archivo, por ejemplopython postgres-insert.py.

Crear una tabla e insertar datos

El ejemplo de código siguiente se conecta a la base de datos de servidor flexible de Azure Database for PostgreSQL mediante la función psycopg2.connect y carga datos con una instrucción SQL INSERT . La función cursor.execute ejecuta la consulta SQL en la base de datos.

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

Cuando el código se ejecuta correctamente, genera el siguiente resultado:

Command-line output

Lectura de datos

El ejemplo de código siguiente se conecta a la base de datos de servidor flexible de Azure Database for PostgreSQL y usa cursor.execute con la instrucción SELECT de SQL para leer datos. Esta función acepta una consulta y devuelve un conjunto de resultados para iterar mediante 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()

Actualización de datos

El ejemplo de código siguiente se conecta a la base de datos de servidor flexible de Azure Database for PostgreSQL y usa cursor.execute con la instrucción SQL UPDATE para actualizar los datos.

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

Eliminación de datos

El ejemplo de código siguiente se conecta a la base de datos de servidor flexible de Azure Database for PostgreSQL y usa cursor.execute con la instrucción SQL DELETE para eliminar un elemento de inventario que insertó anteriormente.

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

Pasos siguientes