Python | Manejo de base de datos en PostgreSQL

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:

  1. Inicie sesión en PostgreSQL:
    sudo -u postgres psql

  2. 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.

  3. 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.

  4. 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:

    1. base de datos: el nombre de la base de datos a la que se está conectando
    2. usuario: el nombre de usuario de su sistema local
    3. contraseña : la contraseña para iniciar sesión en psql
    4. host : el host, que está configurado en localhost de forma predeterminada
    5. puerto : el número de puerto que es 5432 por defecto
    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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *