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
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Una instancia de servidor flexible de Azure Database for PostgreSQL. Para crear una instancia de servidor flexible de Azure Database for PostgreSQL, consulte Creación de una instancia de servidor flexible de Azure Database for PostgreSQL mediante Azure Portal.
- Python 2.7 o 3.6+.
- Instalador de paquetes pip más reciente.
Preparación de la estación de trabajo de cliente
- Si creó la instancia de servidor flexible de Azure Database for PostgreSQL con acceso privado (integración con red virtual), deberá conectarse al servidor desde un recurso dentro de la misma red virtual que el servidor. Puede crear una máquina virtual y agregarla a la red virtual creada con la instancia de servidor flexible de Azure Database for PostgreSQL. Consulte Creación y administración de redes virtuales en Servidor flexible de Azure Database for PostgreSQL mediante la CLI de Azure.
- Si creó la instancia de servidor flexible de Azure Database for PostgreSQL con acceso público (direcciones IP permitidas), puede agregar la dirección IP local a la lista de reglas de firewall en el servidor. Consulte Creación y administración de las reglas de firewall de Servidor flexible de Azure Database for PostgreSQL mediante la CLI de Azure.
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.
En Azure Portal, busque y seleccione el nombre del servidor flexible de Azure Database for PostgreSQL.
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:
Cree un nuevo archivo en un editor de texto.
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.
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.
Para ejecutar el archivo, cambie a la carpeta del proyecto en una interfaz de línea de comandos y escriba
python
seguido 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:
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()