Como configurar um banco de dados Postgres no Django
Tags: postgres, django, postgressql, python
Published: 2024-04-17 00:48:47

Django é um framework de desenvolvimento web em Python, que por padrão já vem configurado com um banco de dados SQLite. No entanto, em alguns casos, pode ser necessário migrar para um banco de dados mais robusto, como o Postgres.
Neste post, faremos a configuração inicial do Postgres em uma aplicação Django.

Obs: todas as configurações aqui se referem ao sistema operacional Windows.

## 1. Instalar o Postgres localmente
Em primeiro lugar, é preciso instalar o Postgres e o pgAdmin 4 em sua máquina local.


### 1.1 Download Postgres
Para isso, vá no [installer da EDB](https://www.enterprisedb.com/downloads/postgres-postgresql-downloads) e baixe a versão compatível com seu sistema operacional mais atualizada.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/121f3s0pe8q1gmq2btab.png)


Nesse caso, eu escolhi a versão 16.2 para Windows.


### 1.2 Inicie a pré-instalação
Com o download completo, clique para iniciar a instalação. Quando solicitado a escolher os componentes, desmarque a opção do Stack Builder.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fpnvvchwg929pwk6h8wh.png)


### 1.3 Selecione uma senha
Quando requerido, insira uma senha. De resto, aceite as configurações padrão do instalador.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n29a25hfgjxk407rhqt5.png)


### 1.4 Checagem final
Após selecionar todas as configurações, o programa solicitará a revisão da pré-instalação. Verifique se tudo está OK e clique em Next.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gfyv9k943hhc9dfr0h3c.png)

### 1.5 Instalação
A instalação pode levar alguns minutos. Após o seu término, clique em Finish para começarmos a configuração do servidor.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4c4lsqerruuhhljt16n2.png)

## 2. Configure o server do Postgres
Após a instalação, é preciso configurar o server que hospedará o banco de dados.

### 2.1 Inicie o pgAdmin 4
A aplicação pgAdmin 4 é instalada em conjunto com o Postgres, e permite a configuração e interação com o banco de dados de uma maneira mais amigável para o usuário, sem necessidade de utilização do terminal.
Vamos ver como configurar um banco de dados a partir dessa feramenta.
Busque por pgAdmin 4 na barra de pesquisa do Windows e abra a aplicação.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4rrt3dh176ad1mbcakfj.png)

### 2.2 Registre um servidor
Clique com o botão direito em Server e escolha a opção Register > Server.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5om6d8j1erz3e0pt7nwd.png)

### 2.3 Configure o servidor
Na aba General, digite um nome para o servidor, no meu caso, escolhi "Local". 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lkt41m4ii1lauf9vveua.png)

Na aba Connection, no campo Host name/address, digite "localhost", digite a senha que você escolheu na pré-instalação do Postgres, clique em "Save password" e depois em "Save".

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5qhax85cl4aj6snnyf76.png)

### 2.4 Crie uma database
Com o botão direito, clique no nome do servidor, no nosso caso, "Local", depois em Create > Database.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8079li77o8j2u2atf5vi.png)

### 2.5 Nomeie sua database
Na caixa de diálogo que abrirá, dê um nome para a database, nesse caso, escolhi o nome 'djangodb'. Clique em Save. A database será criada já com as tabelas padrão do Django.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bx4au31xzhnoxg4xfh4m.png)

Com a database criada, o último passo é configurar nos arquivos do Django o banco de dados Postgres.

## 3. Configure a database nos arquivos do Django
Para os próximos passos, você já deverá ter feito a configuração inicial do django e do ambiente virtual em que rodará a aplicação. Aqui estou usando o VSCode como editor de texto.

### 3.1 Instale os pacotes necessários
Com o ambiente virtual ativado, instale o pacote psycopg e o pacote python-decouple.

`$ pip install psycopg2`
`$ pip install python-decouple`

### 3.2 Atualize a configuração do arquivo settings.py
Abra o arquivo settings.py, incluído na pasta do projeto.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9sw0wzjjrl87i1n86qdl.png)

Importe config do pacote decouple, no topo do arquivo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/usafeehp4cxthqw7s3tl.png)

No mesmo arquivo setting.py, nas configurações do banco de dados, substitua a configuração padrão do sqlite...

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugsvnnvhm61ky6gl8ks2.png)

...pela configuração mostrada abaixo:


```
DATABASES = {

    'default': {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": config("DB_NAME"),
        "USER": config("DB_USER"),
        "PASSWORD": config("DB_PASSWORD"),
        "HOST": config("DB_HOST"),
        "PORT": config("DB_PORT"),
    }
}
```
Dessa forma, podemos armazenar as informações sensíveis como o nome, usuário e senha do banco de dados em uma variável de ambiente que não subirá com os arquivos para o github.

### 3.3 Crie um arquivo para armazenar as variáveis de ambiente
Para armazenar os dados sensíveis que não devem ser expostos, crie um arquivo ".env". Ele deve ficar na mesma posição hierárquica do arquivo manage.py.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/acybijzcfy9eg4bdw4qr.png)

Nesse arquivo, armazene as variáveis de ambiente, substituindo, no código abaixo, os valores, pelos dados que você configurou na criação do banco de dados.

```
DB_NAME=nome_do_banco_de_dados
DB_USER=nome_do_usuário
DB_PASSWORD=senha
DB_HOST=nome_do_host
DB_PORT=5432
```

Não se esqueça de adicionar ao arquivo .gitignore o nome do arquivo em que estão armazenadas as variáveis de ambiente, no nosso caso, o ".env"!

### 3.4 Grave as novas configurações do banco de dados
Rode no terminal, o comando migrate.

`$ python manage.py migrate`

Crie o superuser do admin:

`$ python manage.py createsuperuser`

Escolha um nome, email e senha para o superuser.

Se tudo deu certo, ao rodar a aplicação, o admin do django irá inicializar normalmente. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xnz8zsovxx8gt75awjj5.png)

Pronto, agora o banco de dados Postgres está configurado e pronto para rodar.