Imagem de destaque do blog justcode.com.br.

Como utilizar Python com o banco de dados PostgreSQL

Hoje veremos como utilizar a linguagem de programação Python com o banco de dados PostgreSQL através do conector psycopg.

Psycopg

Psycopg é um adaptador de banco de dados PostgreSQL para a linguagem de programação Python. Ele permite que os programas Python se conectem a um banco de dados PostgreSQL, enviem consultas SQL e manipulem os resultados dessas consultas.

O Psycopg é amplamente utilizado devido à sua facilidade de uso e eficiência, sendo uma escolha popular para desenvolvedores que trabalham com Python e PostgreSQL.


Posts relacionados:


    O psycopg pode ser instalado usando o pip, que é o gerenciador de pacotes padrão do Python:

    pip install "psycopg[binary]"

    Depois de instalado, você pode importar o conector em seus scripts Python e usá-lo para se conectar a um servidor PostgreSQL e executar operações de banco de dados.


    Contêiner

    Para testar o código de exemplo foi utilizando o seguinte arquivo docker-compose.yaml:

    services:
      db:
        image: postgres:16.2
        container_name: PostgreSQL
        restart: on-failure
        shm_size: 128mb
        ports:
          - '5432:5432'
        environment:
          POSTGRES_USER: dbuser
          POSTGRES_PASSWORD: 123456
          POSTGRES_DB: database_name
    

    📝 Contêiner testado com Docker e com o Podman.


    Exemplo de CRUD

    # -*- coding: utf-8 -*-
    """CRUD - Python - psycopg - PostgreSQL."""
    
    from psycopg import connect
    
    # Conexão (commit, rollback, close, etc).
    con = connect(
        user='dbuser',
        password='123456',
        host='localhost',
        port='5432',
        dbname='database_name'
    )
    
    # config = {
    #    'user': 'dbuser',
    #    'password': '123456',
    #    'host': 'localhost',
    #    'port': '5432',
    #    'dbname': 'database_name'
    # }
    # con = connect(**config)
    
    # Cursor (DML, DDL, etc).
    cur = con.cursor()
    
    cur.execute('DROP TABLE IF EXISTS table_name;')
    
    table_name = '''CREATE TABLE IF NOT EXISTS table_name (
    id    serial PRIMARY KEY,
    name  VARCHAR(32),
    age   SMALLINT
    );'''
    cur.execute(table_name)
    
    # Create.
    print('[!] Create [!]')
    query = 'INSERT INTO table_name (name, age) VALUES (%s, %s);'
    cur.execute(
        query,
        ('renato', 35),
    )
    
    # Bulk create.
    cur.executemany(
        query,
        (
            ('maria', 25),
            ('sandy', 19),
        )
    )
    
    # Read.
    print('\n[!] Read [!]')
    cur.execute('SELECT * FROM table_name;')
    print(cur.fetchall())
    
    # Limit.
    query = 'SELECT * FROM table_name LIMIT %s;'
    cur.execute(
        query,
        (3,),
    )
    print(cur.fetchall())
    
    # Where.
    query = 'SELECT * FROM table_name WHERE id = %s;'
    cur.execute(
        query,
        (1,),
    )
    print(cur.fetchone())
    
    query = 'SELECT * FROM table_name WHERE age > %s;'
    cur.execute(
        query,
        (20,),
    )
    print(cur.fetchall())
    
    # Update.
    print('\n[!] Update [!]')
    query = 'SELECT * FROM table_name WHERE id = %s;'
    cur.execute(
        query,
        (1,),
    )
    print(cur.fetchone())
    
    query = 'UPDATE table_name SET name = %s WHERE id = %s;'
    cur.execute(
        query,
        ('joão', 1),
    )
    
    query = 'SELECT * FROM table_name WHERE id = %s;'
    cur.execute(
        query,
        (1,),
    )
    print(cur.fetchone())
    
    # Delete.
    print('\n[!] Delete [!]')
    query = 'SELECT * FROM table_name WHERE id = %s;'
    cur.execute(
        query,
        (1,),
    )
    print(cur.fetchone())
    
    query = 'DELETE FROM table_name WHERE id = %s;'
    cur.execute(
        query,
        (1,),
    )
    
    query = 'SELECT * FROM table_name WHERE id = %s;'
    cur.execute(
        query,
        (1,),
    )
    print(cur.fetchone())
    
    con.close()
    

    Conclusão

    O PostgreSQL é um sistema de gerenciamento de banco de dados poderoso e versátil, adequado para uma ampla gama de aplicações.

    Compreender os conceitos básicos, como bancos de dados, tabelas, consultas SQL e chaves, pode ajudá-lo a utilizar o PostgreSQL de forma eficaz em seus projetos de desenvolvimento.