PostgreSQL - Interfaz Python
Instalación
PostgreSQL se puede integrar con Python usando el módulo psycopg2. sycopg2 es un adaptador de base de datos PostgreSQL para el lenguaje de programación Python. psycopg2 fue escrito con el objetivo de ser muy pequeño y rápido, y estable como una roca. No es necesario que instale este módulo por separado porque se envía, de forma predeterminada, junto con la versión 2.5.x de Python en adelante.
Si no lo tiene instalado en su máquina, puede usar el comando yum para instalarlo de la siguiente manera:
$yum install python-psycopg2
Para usar el módulo psycopg2, primero debe crear un objeto Connection que represente la base de datos y luego, opcionalmente, puede crear un objeto cursor que lo ayudará a ejecutar todas las declaraciones SQL.
API del módulo Python psycopg2
Las siguientes son rutinas importantes del módulo psycopg2, que pueden ser suficientes para trabajar con la base de datos PostgreSQL desde su programa Python. Si está buscando una aplicación más sofisticada, puede consultar la documentación oficial del módulo Python psycopg2.
S. No. | API y descripción |
---|---|
1 | psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432") Esta API abre una conexión a la base de datos PostgreSQL. Si la base de datos se abre correctamente, devuelve un objeto de conexión. |
2 | connection.cursor() Esta rutina crea una cursor que se utilizará en toda la programación de su base de datos con Python. |
3 | cursor.execute(sql [, optional parameters]) Esta rutina ejecuta una instrucción SQL. La instrucción SQL puede parametrizarse (es decir, marcadores de posición en lugar de literales SQL). El módulo psycopg2 admite marcadores de posición con el signo% s Por ejemplo: cursor.execute ("insertar en personas valores (% s,% s)", (quién, edad)) |
4 | cursor.executemany(sql, seq_of_parameters) Esta rutina ejecuta un comando SQL contra todas las secuencias de parámetros o asignaciones que se encuentran en la secuencia sql. |
5 | cursor.callproc(procname[, parameters]) Esta rutina ejecuta un procedimiento de base de datos almacenada con el nombre dado. La secuencia de parámetros debe contener una entrada para cada argumento que espera el procedimiento. |
6 | cursor.rowcount Este atributo de solo lectura que devuelve el número total de filas de la base de datos que han sido modificadas, insertadas o eliminadas por la última ejecución * (). |
7 | connection.commit() Este método confirma la transacción actual. Si no llama a este método, cualquier cosa que haya hecho desde la última llamada a commit () no será visible desde otras conexiones de base de datos. |
8 | connection.rollback() Este método revierte cualquier cambio en la base de datos desde la última llamada a commit (). |
9 | connection.close() Este método cierra la conexión a la base de datos. Tenga en cuenta que esto no llama automáticamente a commit (). Si simplemente cierra la conexión de su base de datos sin llamar a commit () primero, ¡sus cambios se perderán! |
10 | cursor.fetchone() Este método obtiene la siguiente fila de un conjunto de resultados de consulta y devuelve una sola secuencia, o None cuando no hay más datos disponibles. |
11 | cursor.fetchmany([size=cursor.arraysize]) Esta rutina recupera el siguiente conjunto de filas del resultado de una consulta y devuelve una lista. Se devuelve una lista vacía cuando no hay más filas disponibles. El método intenta obtener tantas filas como indique el parámetro de tamaño. |
12 | cursor.fetchall() Esta rutina recupera todas las filas (restantes) del resultado de una consulta y devuelve una lista. Se devuelve una lista vacía cuando no hay filas disponibles. |
Conectando a la base de datos
El siguiente código de Python muestra cómo conectarse a una base de datos existente. Si la base de datos no existe, se creará y finalmente se devolverá un objeto de base de datos.
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database="testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
Aquí, también puede proporcionar la base de datos testdb como nombre y si la base de datos se abre correctamente, aparecerá el siguiente mensaje:
Open database successfully
Crear una tabla
El siguiente programa de Python se utilizará para crear una tabla en la base de datos creada anteriormente:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
print "Table created successfully"
conn.commit()
conn.close()
Cuando se ejecuta el programa anterior, creará la tabla EMPRESA en su test.db y mostrará los siguientes mensajes:
Opened database successfully
Table created successfully
INSERTAR Operación
El siguiente programa de Python muestra cómo podemos crear registros en nuestra tabla EMPRESA creada en el ejemplo anterior:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )");
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print "Records created successfully";
conn.close()
Cuando se ejecuta el programa anterior, creará los registros dados en la tabla EMPRESA y mostrará las siguientes dos líneas:
Opened database successfully
Records created successfully
SELECCIONAR Operación
El siguiente programa de Python muestra cómo podemos buscar y mostrar registros de nuestra tabla EMPRESA creada en el ejemplo anterior:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Cuando se ejecuta el programa dado anteriormente, producirá el siguiente resultado:
Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
Operación ACTUALIZAR
El siguiente código de Python muestra cómo podemos usar la instrucción UPDATE para actualizar cualquier registro y luego buscar y mostrar registros actualizados de nuestra tabla EMPRESA:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", cur.rowcount
cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Cuando se ejecuta el programa dado anteriormente, producirá el siguiente resultado:
Opened database successfully
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
Operación DELETE
El siguiente código de Python muestra cómo podemos usar la declaración DELETE para eliminar cualquier registro y luego buscar y mostrar los registros restantes de nuestra tabla EMPRESA:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", cur.rowcount
cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Cuando se ejecuta el programa dado anteriormente, producirá el siguiente resultado:
Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully