Conectando com Banco de Dados - Django
O armazenamento de dados em aplicações web geralmente é realizado utilizando bancos de dados. O Django, por padrão, oferece uma integração prática com diversas opções de sistemas de gerenciamento de bancos de dados (SGBDs).
Configuração de Banco de Dados
Por padrão, o Django utiliza o SQLite como sistema de banco de dados. O SQLite é simples de usar, não exige a execução de um servidor e permite que os arquivos do banco sejam facilmente transferidos entre dispositivos. Entretanto, é possível configurar o Django para trabalhar com a maioria dos SGBDs amplamente utilizados.
A configuração de banco de dados no Django é feita no arquivo settings.py
DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
O Django permite configurar múltiplos bancos de dados dentro de um mesmo projeto. Cada conexão é representada como uma chave no dicionário DATABASES
default
No caso da configuração padrão, o parâmetro ENGINE
django.db.backends.sqlite3
NAME
db.sqlite3
BASE_DIR
A variável BASE_DIR
settings.py
BASE_DIR = Path(__file__).resolve().parent.parent
Após a primeira execução do projeto, o arquivo db.sqlite3

Outros Sistemas de Bancos de Dados
Para configurar o Django com outros SGBDs, é necessário instalar o pacote correspondente ao banco desejado. Alguns exemplos incluem:
PostgreSQL: o pacote
(instalado compsycopg2
)pip install psycopg2
MySQL: o pacote
(instalado commysql-python
)pip install mysql-python
Oracle: o pacote
(instalado comcx_Oracle
)pip install cx_Oracle
SQL Server: o pacote
, mantido pela Microsoft, pode ser instalado commssql-django
.pip install mssql-django
Parâmetros de Configuração
Além de ENGINE
NAME
: encapsula cada solicitação em uma transação quando definido comoATOMIC_REQUESTS
.True
: desativa o sistema de controle de transações do Django se definido comoAUTOCOMMIT
.False
: define o endereço do servidor de banco de dados.HOST
: especifica a porta de conexão.PORT
eUSER
: informam as credenciais de autenticação.PASSWORD
: configura o tempo de vida da conexão em segundos. O valorCONN_MAX_AGE
fecha a conexão após cada solicitação, enquanto0
mantém uma conexão persistente.None
: permite adicionar configurações específicas para determinados bancos.OPTIONS
Uma configuração típica para o PostgreSQL seria:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
Migrações de Banco de Dados
Quando um projeto é iniciado, o banco de dados ainda não contém tabelas ou dados. Muitos aplicativos incluídos no Django, listados na variável INSTALLED_APPS
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Para criar as tabelas necessárias, é preciso aplicar as migrações executando o comando:
python manage.py migrate

migrate

Depois de executar o comando, o arquivo db.sqlite3

Mesmo que o projeto não utilize diretamente o banco de dados, ele será necessário para recursos como autenticação, autorização e administração. Nesse caso, as migrações devem ser aplicadas para garantir o funcionamento correto dessas funcionalidades.