Imagem de destaque do blog justcode.com.br.

Configurando o banco de dados PostgreSQL no framework Django

Hoje veremos como realizar a configuração do banco de dados PostgreSQL utilizando-se o driver psycopg3 no framework web Django.

📝 Código testado no Django 5.

📝 O framework Django 5 suporta PostgreSQL 12 ou superior.

📝 O framework Django 5 suporta psycopg 3.1.8 ou superior.


Posts relacionados:


    psycopg

    O psycopg é um conector para o banco de dados PostgreSQL para Python.

    Ele é um pacote que permite que você se conecte a um banco de dados PostgreSQL a partir de um programa Python e execute consultas SQL, insira, atualize e exclua dados, e faça outras operações de banco de dados.

    O psycopg implementa a API do banco de dados PostgreSQL em Python, permitindo que os desenvolvedores interajam com um banco de dados PostgreSQL de forma fácil e eficiente em seus programas Python.

    Instalação

    Para instalar o driver psycopg:

    pip install "psycopg[binary,pool]"

    Conexão

    Configurando a variável DATABASES do arquivo settings.py:

    # settings.py
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'database_name',
            'USER': 'dbuser',
            'PASSWORD': '123456',
            'HOST': 'localhost',
            'PORT': '5432',
        }
    }

    Onde:

    • ENGINE: Driver será usado pelo Django.
    • NAME: Nome do database que será usado nessa conexão.
    • USER: Nome do usuário que irá utilizar o banco. Usuário deve ter as permissões necessária para manipular o banco.
    • PASSWORD: Senha do usuário.
    • HOST: IP ou nome do computador onde o banco de dados está sendo executado.
    • PORT: Porta que o banco de dados está utilizando. O padrão é 5432.

    🚨 No código acima os valores das variáveis estão sendo passados hardcoded.

    Se possível evite fazer isso, de preferência pela utilização de variáveis de ambiente ou arquivos .env.


    Extra

    Docker compose

    Configuração do banco que foi utilizada nos testes com o framework web Django (docker-compose.yml):

    # docker-compose.yml
    
    # [Docker](https://docs.docker.com/):
    # - `docker-compose up`.
    # - `docker-compose down`.
    
    # [podman](https://podman.io/) - [podman-compose](https://github.com/containers/podman-compose):
    # - `podman-compose up`.
    # - `podman-compose down.
    
    services:
      db:
        image: postgres:16.2-alpine
        container_name: PostgreSQL
        restart: on-failure
        # Privileged para evitar o erro: '/var/lib/postgresql/data': Permission denied
        privileged: true
        ports:
          - '5432:5432'
        volumes:
          - ../databases/postgresql:/var/lib/postgresql/data
        environment:
          POSTGRES_USER: dbuser
          POSTGRES_PASSWORD: 123456
          POSTGRES_DB: database_name

    📝 Arquivo docker-compose.yml testado com podman-compose.