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.