Conectando com Banco de Dados no 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
, através do dicionário DATABASES
. O formato padrão desta variável é:
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
. Essas chaves atuam como identificadores para as conexões configuradas. A chave especial default
é reservada para a conexão padrão, usada automaticamente pelo Django sempre que nenhuma conexão específica é indicada em uma operação. Essa flexibilidade permite que projetos utilizem diversos bancos de dados simultaneamente, cada um com configurações personalizadas.
No caso da configuração padrão, o parâmetro ENGINE
define o mecanismo de banco de dados utilizado. No exemplo apresentado, o SQLite é especificado por meio do driver django.db.backends.sqlite3
. Já o parâmetro NAME
indica o caminho para o arquivo do banco de dados. Aqui, o arquivo é denominado db.sqlite3
e está localizado no diretório principal do projeto, conforme definido pela variável BASE_DIR
.
A variável BASE_DIR
é configurada no início do arquivo settings.py
e aponta para o diretório principal do projeto:
BASE_DIR = Path(__file__).resolve().parent.parent
Após a primeira execução do projeto, o arquivo db.sqlite3
será criado automaticamente nesse diretório.
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
psycopg2
(instalado compip install psycopg2
) - MySQL: o pacote
mysql-python
(instalado compip install mysql-python
) - Oracle: o pacote
cx_Oracle
(instalado compip install cx_Oracle
) - SQL Server: o pacote
mssql-django
, mantido pela Microsoft, pode ser instalado compip install mssql-django
.
Parâmetros de Configuração
Além de ENGINE
e NAME
, outros parâmetros podem ser configurados conforme a necessidade:
ATOMIC_REQUESTS
: encapsula cada solicitação em uma transação quando definido comoTrue
.AUTOCOMMIT
: desativa o sistema de controle de transações do Django se definido comoFalse
.HOST
: define o endereço do servidor de banco de dados.PORT
: especifica a porta de conexão.USER
ePASSWORD
: informam as credenciais de autenticação.CONN_MAX_AGE
: configura o tempo de vida da conexão em segundos. O valor0
fecha a conexão após cada solicitação, enquantoNone
mantém uma conexão persistente.OPTIONS
: permite adicionar configurações específicas para determinados bancos.
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
do arquivo settings.py
, dependem de tabelas específicas para funcionar. Exemplos desses aplicativos são:
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
Mensagem do console informando sobre migrações pendentes no Django antes de aplicar o comando migrate
:
Mensagem do console exibindo a aplicação bem-sucedida de todas as migrações no Django:
Depois de executar o comando, o arquivo db.sqlite3
conterá as tabelas essenciais. Para visualizar essas tabelas, podem ser utilizadas ferramentas como o DB Browser for SQLite, compatível com os principais sistemas operacionais.
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.
Documentação oficial: