Introducción
Contenido
PostgreSQL es uno de los sistemas de gestión de bases de datos relacionales más avanzados y utilizados. Es extremadamente popular por muchas razones, algunas de las cuales incluyen que sea de código abierto, su extensibilidad y su capacidad para manejar muchos tipos diferentes de aplicaciones y cargas variables.
Con Python, puede establecer fácilmente una conexión a su base de datos PostgreSQL. Hay muchos controladores de 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 psycopg2 módulo. psycopg2 es un adaptador de base de datos de Postgres para Python. Para utilizar este módulo, primero debe instalarlo. Esto se puede hacer usando el pip
comando, como se muestra a continuación:
$ pip3 install psycopg2
Tenga en cuenta que estoy usando Python 3.5, por lo tanto, he usado pip3
en vez de pip
.
Una vez que se ha instalado el módulo, puede usarlo para conectarse a su base de datos en su aplicación.
Te puede interesar:Transformaciones afines de imágenes en Python con Numpy, Pillow y OpenCVConectarse 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 cursor para ayudarlo en la ejecución de sus declaraciones SQL.
El siguiente ejemplo demuestra 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 del 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 lo proporciona, se utilizará el predeterminado, que es 5432.
Tenga en cuenta que los valores de los parámetros anteriores deben ser correctos para que la conexión se realice correctamente. De lo contrario, se generará una excepción. La salida del código anterior muestra que la conexión a la base de datos se ha establecido correctamente.
Crear una tabla
Para crear una tabla de Postgres en Python, usamos el CREATE TABLE
Declaración SQL. Esta consulta debe ejecutarse después de establecer una conexión a la base de datos. También creamos un objeto cursor llamando al cursor()
método que pertenece al connection
objeto. Esta cursor
El objeto se utiliza para ejecutar realmente sus comandos.
Luego llamamos al execute()
método del cursor
objeto para ayudarnos a crear la tabla. Finalmente, necesitamos confirmar y cerrar la conexión. «Confirmar» la conexión le dice al conductor 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
los commit()
El método nos ayuda a aplicar los cambios que hemos realizado en la base de datos, y estos cambios no se pueden deshacer si commit()
se ejecuta con éxito. los close()
El método cerrará la conexión a la base de datos.
En este punto, hemos creado una tabla con 4 columnas, todas las cuales tienen varios tipos de datos. El resultado anterior muestra que la tabla se creó correctamente.
Insertar datos
Podemos insertar un solo registro o varios registros en una tabla de base de datos de Postgres. Nuevamente, primero debemos establecer una conexión con el servidor de la base de datos llamando al connect()
función. A continuación, deberíamos crear un objeto cursor llamando al cursor()
método. Por último, deberíamos ejecutar el INSERT
declaración a través del 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
Desde el commit()
no se llama al método hasta que «ejecutamos» todos los INSERT
declaraciones, varios registros se insertan 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 el connect()
función. A continuación, se debe crear un nuevo cursor llamando al cursor()
método. El objeto de cursor creado se puede utilizar para ejecutar la SELECT
declaració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, siendo la lista de «nivel superior» 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()
.
Actualizar tablas
Podemos actualizar o modificar los detalles de un registro que ya ha sido 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 al cursor()
función para crear un objeto cursor. Finalmente, ejecutamos el execute()
método para ejecutar el UPDATE
declaració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
Te puede interesar:Introducción a Python FTPDatabase 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 AGE
para todas las filas donde el ADMISSION
es 3420. Después de ejecutar la actualización, recuperamos estos datos para verificar que se hayan actualizado las filas / columnas correspondientes.
Eliminar filas
Para eliminar un registro de una tabla de la base de datos de Postgres, primero debemos establecer una conexión con el servidor de la base de datos. En segundo lugar, se debe crear un objeto de cursor llamando al cursor()
función. Luego ejecutamos el DELETE
declaración 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 donde 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 de acceder a una base de datos PostgreSQL. Hay muchos controladores de bases 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 con su base de datos PostgreSQL y ejecutar consultas SQL comunes usando código Python.
Te puede interesar:Python para PNL: tokenización, derivación y lematización con la biblioteca SpaCy