Trabajando con PostgreSQL en Python

Introducción

PostgreSQL es uno de los sistemas de gestión de bases de datos relacionales más avanzados y más utilizados. Es extremadamente popular por muchas razones, algunas de las cuales incluyen que sean de código abierto, su capacidad de extensión y su capacidad para manejar diferentes tipos de aplicaciones y cargas variables.
Con Python, puede establecer fácilmente una conexión a su base de datos PostgreSQL. Hay muchos controladores Python para PostgreSQL, siendo "psycopg" el más popular. Su versión actual es psycopg2.
En este artículo, discutiremos cómo acceder a una base de datos PostgreSQL en Python usando el controlador psycopg2.

El módulo psycopg2

Podemos integrar Postgres con Python usando el módulo psycopg2 . psycopg2 es un adaptador de base de datos Postgres para Python. Para utilizar este módulo, primero debe instalarlo. Esto se puede hacer usando el pipcomando, como se muestra a continuación:
$ pip3 install psycopg2
Tenga en cuenta que estoy usando Python 3.5, por lo tanto, he usado en pip3lugar de pip.
Una vez que se haya instalado el módulo, puede usarlo para conectarse a su base de datos en su aplicación.

Conexión a una base de datos

Para conectarse a su base de datos, primero debe crear un objeto de conexión que represente la base de datos. A continuación, debe crear un objeto de cursor para ayudarlo en la ejecución de sus sentencias de SQL.
El siguiente ejemplo muestra cómo establecer una conexión a la base de datos llamada "postgres":
import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="", host="127.0.0.1", port="5432")

print("Database opened successfully")  
Salida:
Database opened successfully  
La siguiente es la lista de parámetros que se han pasado al connect()método:
  • database: El nombre de la base de datos a la que necesita conectarse.
  • user: El nombre de usuario que se utilizará para la autenticación.
  • password: La contraseña de la base de datos para el usuario.
  • host: La dirección del servidor de la base de datos. Por ejemplo, un nombre de dominio, "localhost" o una dirección IP.
  • port: El número de puerto. Si no proporciona esto, se usará el predeterminado, que es 5432.
Tenga en cuenta que los valores de los parámetros anteriores deben ser correctos para que la conexión sea exitosa. Si no, se generará una excepción. La salida en el código anterior muestra que la conexión a la base de datos se ha establecido con éxito.

Creando una tabla

Para crear una tabla de Postgres en Python, usamos la CREATE TABLEdeclaración SQL. Esta consulta debe ejecutarse después de establecer una conexión a la base de datos. También creamos un objeto de cursor llamando al cursor()método que pertenece al connectionobjeto. Este cursorobjeto se utiliza para ejecutar realmente sus comandos.
Luego llamamos al execute()método del cursorobjeto para que nos ayude a crear la tabla. Finalmente, tenemos que comprometernos y cerrar la conexión. "Confirmar" la conexión le dice al controlador que envíe los comandos a la base de datos.
El siguiente ejemplo demuestra esto:
import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")  
print("Database opened successfully")

cur = con.cursor()  
cur.execute('''CREATE TABLE STUDENT  
      (ADMISSION INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      COURSE        CHAR(50),
      DEPARTMENT        CHAR(50));''')
print("Table created successfully")

con.commit()  
con.close()  
Salida
Database opened successfully  
Table created successfully  
El commit()método nos ayuda a aplicar los cambios que hemos realizado en la base de datos, y estos cambios no se pueden deshacer si se commit()ejecutan correctamente. El close()método cerrará la conexión a la base de datos.
En este punto, hemos creado una tabla con 4 columnas, todas con varios tipos de datos. La salida anterior muestra que la tabla se creó correctamente.

Insertando Datos

Podemos insertar un solo registro o varios registros en una tabla de base de datos de Postgres. De nuevo, primero debemos establecer una conexión con el servidor de la base de datos llamando a la connect()función. A continuación, debemos crear un objeto de cursor llamando al cursor()método. Por último, debemos ejecutar la INSERTinstrucción mediante el execute()método para agregar los datos a la tabla.
Aquí hay un ejemplo de esto en acción:
import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")  
print("Database opened successfully")

cur = con.cursor()

cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3420, 'John', 18, 'Computer Science', 'ICT')");

con.commit()  
print("Record inserted successfully")  
con.close()  
Salida
Database opened successfully  
Record inserted successfully  
Después de ejecutar este código, hemos insertado un solo registro en nuestra tabla de base de datos. Esto se hizo especificando el nombre de la tabla, así como las columnas en las que necesitamos insertar los datos. También es posible que insertemos varios registros con un solo comando. Por ejemplo:
import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")  
print("Database opened successfully")

cur = con.cursor()

cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3419, 'Abel', 17, 'Computer Science', 'ICT')");  
cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3421, 'Joel', 17, 'Computer Science', 'ICT')");  
cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3422, 'Antony', 19, 'Electrical Engineering', 'Engineering')");  
cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3423, 'Alice', 18, 'Information Technology', 'ICT')");

con.commit()  
print("Records inserted successfully")  
con.close()  
Salida
Database opened successfully  
Records inserted successfully  
Dado que el commit()método no se llama hasta que "ejecutamos" todas las INSERTdeclaraciones, se insertan varios registros con una sola llamada del commit()método.

Recuperando datos

Puede seleccionar datos de una base de datos de Postgres y ver los registros de la tabla. Primero, debe establecer una conexión a la base de datos utilizando la connect()función. A continuación, se debe crear un nuevo cursor llamando al cursor()método. El objeto de cursor creado se puede usar para ejecutar la SELECTdeclaración para consultar datos de la base de datos.
Por ejemplo:
import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")  
print("Database opened successfully")

cur = con.cursor()  
cur.execute("SELECT admission, name, age, course, department from STUDENT")  
rows = cur.fetchall()

for row in rows:  
    print("ADMISSION =", row[0])
    print("NAME =", row[1])
    print("AGE =", row[2])
    print("COURSE =", row[3])
    print("DEPARTMENT =", row[4], "\n")

print("Operation done successfully")  
con.close()  
Salida
Database opened successfully  
ADMISSION = 3420  
NAME = John  
AGE = 18  
COURSE = Computer Science  
DEPARTMENT = ICT

ADMISSION = 3419  
NAME = Abel  
AGE = 17  
COURSE = Computer Science  
DEPARTMENT = ICT

ADMISSION = 3421  
NAME = Joel  
AGE = 17  
COURSE = Computer Science  
DEPARTMENT = ICT

ADMISSION = 3422  
NAME = Antony  
AGE = 19  
COURSE = Electrical Engineering  
DEPARTMENT = Engineering

ADMISSION = 3423  
NAME = Alice  
AGE = 18  
COURSE = Information Technology  
DEPARTMENT = ICT

Operation done successfully  
Aquí hemos recuperado datos de la base de datos especificando la tabla y los nombres de las columnas que necesitamos recuperar de la tabla de la base de datos. Estos datos se nos devuelven como una lista de tuplas, con la lista de "nivel superior" como las filas de datos. Entonces cada fila es una tupla de los datos de la columna. Si no se devuelven filas para la consulta, se devuelve una lista vacía por fetchall().

Actualización de tablas

Podemos actualizar o modificar los detalles de un registro que ya se ha insertado en una tabla de base de datos. Primero, tenemos que establecer una conexión a la base de datos usando el connect()método. A continuación, llamamos a la cursor()función para crear un objeto de cursor. Finalmente, ejecutamos el execute()método para ejecutar la UPDATEdeclaración con valores de entrada.
Por ejemplo:
import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")  
print("Database opened successfully")

cur = con.cursor()

cur.execute("UPDATE STUDENT set AGE = 20 where ADMISSION = 3420")  
con.commit()  
print("Total updated rows:", cur.rowcount)

cur.execute("SELECT admission, age, name, course, department from STUDENT")  
rows = cur.fetchall()  
for row in rows:  
    print("ADMISSION =", row[0])
    print("NAME =", row[1])
    print("AGE =", row[2])
    print("COURSE =", row[2])
    print("DEPARTMENT =", row[3], "\n")

print("Operation done successfully")  
con.close()  
Salida
Database opened successfully  
Total updated rows: 1  
ADMISSION = 3419  
NAME = 17  
AGE = Abel  
COURSE = Abel  
DEPARTMENT = Computer Science

ADMISSION = 3421  
NAME = 17  
AGE = Joel  
COURSE = Joel  
DEPARTMENT = Computer Science

ADMISSION = 3422  
NAME = 19  
AGE = Antony  
COURSE = Antony  
DEPARTMENT = Electrical Engineering

ADMISSION = 3423  
NAME = 18  
AGE = Alice  
COURSE = Alice  
DEPARTMENT = Information Technology

ADMISSION = 3420  
NAME = 20  
AGE = John  
COURSE = John  
DEPARTMENT = Computer Science

Operation done successfully  
En el ejemplo anterior, hemos actualizado el valor de la columna AGEpara todas las filas donde ADMISSIONestá el 3420. Después de ejecutar la actualización, recuperamos estos datos para verificar que se hayan actualizado las filas / columnas apropiadas.

Borrando filas

Para eliminar un registro de una tabla de base de datos de Postgres, primero debemos establecer una conexión con el servidor de base de datos. En segundo lugar, se debe crear un objeto de cursor llamando a la cursor()función. Luego ejecutamos la DELETEsentencia para realizar la eliminación.
Por ejemplo:
import psycopg2

con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432")  
print("Database opened successfully")

cur = con.cursor()

cur.execute("DELETE from STUDENT where ADMISSION=3420;")  
con.commit()  
print("Total deleted rows:", cur.rowcount)

cur.execute("SELECT admission, name, age, course, department from STUDENT")  
rows = cur.fetchall()  
for row in rows:  
    print("ADMISSION =", row[0])
    print("NAME =", row[1])
    print("AGE =", row[2])
    print("COURSE =", row[3])
    print("DEPARTMENT =", row[4], "\n")

print("Deletion successful")  
con.close()  
Salida
Database opened successfully  
Total deleted rows: 1  
ADMISSION = 3419  
NAME = Abel  
AGE = 17  
COURSE = Computer Science  
DEPARTMENT = ICT

ADMISSION = 3421  
NAME = Joel  
AGE = 17  
COURSE = Computer Science  
DEPARTMENT = ICT

ADMISSION = 3422  
NAME = Antony  
AGE = 19  
COURSE = Electrical Engineering  
DEPARTMENT = Engineering

ADMISSION = 3423  
NAME = Alice  
AGE = 18  
COURSE = Information Technology  
DEPARTMENT = ICT

Deletion successful  
En este ejemplo, hemos eliminado todos los registros en los que el número de admisión del estudiante es 3420, que en este caso es solo una fila. Después de recuperar los datos usando SELECT, podemos ver que este registro no es parte de la salida anterior, lo que confirma que se ha eliminado de la base de datos.

Conclusión

Con Python, hay varias formas en que podemos acceder a una base de datos PostgreSQL. Existen muchos controladores de base de datos para Python que podemos usar para este propósito, pero psycopg es el más popular. En este artículo mostramos cómo instalar el módulo, establecer una conexión a su base de datos PostgreSQL y ejecutar consultas SQL comunes utilizando el código Python.

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.