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