Atualizado: 18/01/2024

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

Configurando o caminho para o banco de dados no Django

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 com pip install psycopg2)

  • MySQL: o pacote mysql-python (instalado com pip install mysql-python)

  • Oracle: o pacote cx_Oracle (instalado com pip install cx_Oracle)

  • SQL Server: o pacote mssql-django, mantido pela Microsoft, pode ser instalado com pip 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 como True.

  • AUTOCOMMIT: desativa o sistema de controle de transações do Django se definido como False.

  • HOST: define o endereço do servidor de banco de dados.

  • PORT: especifica a porta de conexão.

  • USER e PASSWORD: informam as credenciais de autenticação.

  • CONN_MAX_AGE: configura o tempo de vida da conexão em segundos. O valor 0 fecha a conexão após cada solicitação, enquanto None 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 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
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.

Visualizando o banco de dados com uso do DB Browser for SQLite

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.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com