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.