Configurando o banco de dados PostgreSQL no framework Django

Play this article

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

📝 O framework Django 4.2 suporta PostgreSQL 11 ou superior.

📝 O framework Django 4.2 suporta psycopg 3.1.8+


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


Did you find this article valuable?

Support Renato Cruz by becoming a sponsor. Any amount is appreciated!