PostgreSQL es un sistema de gestión de base de datos relacional de objetos de código abierto. Es bien conocido por su fiabilidad, robustez y rendimiento. PostgreSQL tiene una variedad de bibliotecas de API (interfaz programable de aplicaciones) que están disponibles para una variedad de lenguajes de programación populares como Python. Proporciona muchas funciones para la gestión de bases de datos, como vistas, disparadores, índices (usando B-Trees), etc.
Hay varios módulos de python que nos permiten conectarnos y manipular la base de datos usando PostgreSQL:
- psicopg2
- pg8000
- py-postgresql
- PyGreSQL
Psycopg2 es uno de los controladores de Python más populares para PostgreSQL. Se mantiene activamente y brinda soporte para diferentes versiones de python. También proporciona soporte para subprocesos y se puede utilizar en aplicaciones de subprocesos múltiples. Por estas razones, es una opción popular para los desarrolladores.
En este artículo, exploraremos las características de PostgreSQl usando psycopg2 mediante la construcción de un sistema de administración de base de datos simple en python.
Instalación:
sudo pip3 install psycopg2
Nota: si está usando Python2, use pip install en lugar de pip3
Una vez que se ha instalado psycopg en su sistema, podemos conectarnos a la base de datos y ejecutar consultas en Python.
Creando la base de datos
antes de que podamos acceder a la base de datos en python, debemos crear la base de datos en postgresql. Para crear la base de datos, siga los pasos que se detallan a continuación:
- Inicie sesión en PostgreSQL:
sudo -u postgres psql
- Configurar la contraseña:
\password
A continuación, se le pedirá que introduzca la contraseña. recuerda esto ya que lo usaremos para conectarnos a la base de datos en Python.
- Cree una base de datos llamada «prueba». nos conectaremos a esta base de datos.
CREATE DATABASE test;
Una vez que se hayan configurado la base de datos y la contraseña, salga del servidor psql.
- base de datos: el nombre de la base de datos a la que se está conectando
- usuario: el nombre de usuario de su sistema local
- contraseña : la contraseña para iniciar sesión en psql
- host : el host, que está configurado en localhost de forma predeterminada
- puerto : el número de puerto que es 5432 por defecto
Conexión a la base de datos
El connect()
método se utiliza para establecer la conexión con la base de datos. Toma 5 parámetros:
conn = psycopg2.connect( database="test", user = "adith", password = "password", host = "localhost", port = "5432")
Una vez establecida la conexión, podemos manipular la base de datos en python.
El objeto Cursor se utiliza para ejecutar consultas sql. podemos crear un objeto de cursor usando el objeto de conexión (conn)
cur = conn.cursor()
Con este objeto, podemos realizar cambios en la base de datos a la que estamos conectados.
Después de haber ejecutado todas las consultas, debemos desconectarnos de la conexión. No desconectar no causará ningún error, pero generalmente se considera una buena práctica desconectarse.
conn.close()
Ejecutando consultas
El método de ejecución() toma un parámetro, la consulta SQL que se ejecutará. La consulta SQL se toma en forma de string que contiene la instrucción SQL.
cur.execute("SELECT * FROM emp")
Obteniendo los datos
Una vez que se ha ejecutado la consulta, los resultados de la consulta se pueden obtener mediante el método fetchall() . Este método no toma parámetros y devuelve el resultado de consultas seleccionadas.
res = cur.fetchall()
El resultado de la consulta se almacena en la variable res.
Poniendolo todo junto
Una vez que hemos creado la base de datos en PostgreSQL, podemos acceder a esa base de datos en python. Primero creamos una tabla emp en la base de datos llamada prueba con el esquema: (id INTEGER PRIMARY KEY, nombre VARCHAR(10), salario INT, departamento INT). Una vez que la tabla se crea sin ningún error, insertamos valores en la tabla.
Una vez que se insertan los valores, podemos consultar la tabla para seleccionar todas las filas y mostrarlas al usuario usando la fetchall()
función.
# importing libraries import psycopg2 # a function to connect to # the database. def connect(): # connecting to the database called test # using the connect function try : conn = psycopg2.connect(database = "test" , user = "adith" , password = "password" , host = "localhost" , port = "5432" ) # creating the cursor object cur = conn.cursor() except (Exception, psycopg2.DatabaseError) as error: print ( "Error while creating PostgreSQL table" , error) # returing the conn and cur # objects to be used later return conn, cur # a function to create the # emp table. def create_table(): # connect to the database. conn, cur = connect() try : # the test database contains a table called emp # the schema : (id INTEGER PRIMARY KEY, # name VARCHAR(10), salary INT, dept INT) # create the emp table cur.execute('CREATE TABLE emp ( id INT PRIMARY KEY, name VARCHAR( 10 ), salary INT , dept INT )') # the commit function permanently # saves the changes made to the database # the rollback() function can be used if # there are any undesirable changes and # it simply undoes the changes of the # previous query except : print ( 'error' ) conn.commit() # a function to insert data # into the emp table def insert_data( id = 1 , name = '', salary = 1000 , dept = 1 ): conn, cur = connect() try : # inserting values into the emp table cur.execute( 'INSERT INTO emp VALUES(%s, %s, %s, %s)' , ( id , name, salary, dept)) except Exception as e: print ( 'error' , e) # commiting the transaction. conn.commit() # a function to fetch the data # from the table def fetch_data(): conn, cur = connect() # select all the rows from emp try : cur.execute( 'SELECT * FROM emp' ) except : print ( 'error !' ) # store the result in data data = cur.fetchall() # return the result return data # a function to print the data def print_data(data): print ( 'Query result: ' ) print () # iterating over all the # rows in the table for row in data: # printing the columns print ( 'id: ' , row[ 0 ]) print ( 'name: ' , row[ 1 ]) print ( 'salary: ' , row[ 2 ]) print ( 'dept: ' , row[ 3 ]) print ( '----------------------------------' ) # function to delete the table def delete_table(): conn, cur = connect() # delete the table try : cur.execute( 'DROP TABLE emp' ) except Exception as e: print ( 'error' , e) conn.commit() # driver function if __name__ = = '__main__' : # create the table create_table() # inserting some values insert_data( 1 , 'adith' , 1000 , 2 ) insert_data( 2 , 'tyrion' , 100000 , 2 ) insert_data( 3 , 'jon' , 100 , 3 ) insert_data( 4 , 'daenerys' , 10000 , 4 ) # getting all the rows data = fetch_data() # printing the rows print_data(data) # deleting the table # once we are done with # the program delete_table() |
Producción :
Publicación traducida automáticamente
Artículo escrito por Adith Bharadwaj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA