Neste artigo vamos ver como integrar o framework Django com PostgreSQL, um SGBD que pode deixar suas aplicações escaláveis e eficientes.

django com postgres

Instalando PostgreSQL Windows

Para os usuários de Windows vamos iniciar baixando o instalador neste link.

Faça o download da versão mais recente suportada.

Execute o instalador no maior estilo next, next e next.

postgre instalador

Neste passo defina a senha para o seu usário do banco de dados, lembre dela…

postgre senha

As outras opções você pode deixar padrão e terminar a instalação.

Instalando PostgreSQL Linux

Para iniciar a instalação no Linux, utilizei o Ubuntu, o recomendado é que você atualize seus pacotes e depois faça a instalação, com os comandos:

sudo apt update
sudo apt install postgresql postgresql-contrib

Agora com o PostgreSQL instalado você pode acessar ele no terminal com os seguintes comandos:

sudo -i -u postgres
psql

O primeiro faz com que você utilize o usuário postgres e depois o segundo executa o shell, veja como fica:

postgresql funcionando

Com o Postgre testado, agora precisamos criar um novo usuário para utilizarmos no Django, com o seguinte comando:

sudo -u postgres createuser --interactive

No terminal escolha o nome e responda sim, quando perguntar se este é um superuser.

Vamos também criar uma base de dados para utilizar no projeto, digite este comando no terminal:

sudo -u postgres createdb blog

Assim a base de dados blog será criada.

Temos tudo pronto para integrar o PostgreSQL com o Django!

Visualização com PgAdmin

As vezes é legal ter uma forma mais fácil de visualizar os bancos, tabelas e dados que temos.

Pois com a linha de comando teríamos que muitas vezes pesquisar sobre os comandos para fazer o que queremos.

Então lhes apresento o PgAdmin, que é opicional mas seria legal instalar ele também.

Já que você pode criar, consultar, atualizar e deletar tudo o que quiser por ele, sem ter que saber os comandos em SQL.

Para Windows faça seu download aqui.

Já para Linux, utilize o comando:

sudo apt-get install pgadmin3

Segue uma amostra de como ele é:

pgadmin tela

PgAdmin3 no Linux

Com esse programa de fácil manuseio podemos explorar nossos bancos de dados e tabelas. 🙂

Vai ficar mais fácil para conferirmos como o Django está realizando as interações com o banco.

E um detalhe: no Windows temos acesso a versão 4, que é executada direto no browser:

pgadmin 4

PgAdmin 4

Criando projeto com o Django

Vamos agora iniciar um projeto do 0, para não percamos nossa atenção com coisas triviais, vamos manter o objetivo de Django com PostgreSQL.

Assim sendo digite no terminal este comando para criar o projeto:

django-admin startproject myproject

Com o projeto criado, mude de diretório no terminal para myproject que contem o arquivo manage.py e teste seu mais novo projeto com:

python manage.py runserver

Verifique o terminal e veja que IP o Django passou a você, e acesse pelo seu browser preferido, a tela inicial deve ser semelhante a esta:

django funcionando

O projeto está criado e funcionando!

Instalando o psycopg2

Para rodar Postgres rodar com o Django vamos precisar de um driver também, chamado psycopg2.

Faça a instalação dele utilizando o pip com o seguinte comando:

pip install psycopg2

Configurando o PostgreSQL no Django

Como o Django por padrão vem setado para o SQLite temos que alterar as configs para o PostgreSQL.

Uma observação: na doc do Django é recomendado que use o SQLite apenas para desenvolvimento.

As vezes pela facilidade você pode se apegar a ele, mas é bom desencanar por agora.

Então quando o deploy da aplicação for feito você deverá fazer a integração com um banco mais parrudo.

Boas opções são MySQL ou o próprio PostgreSQL.

Proseguindo, abra o arquivo settings.py em myproject/myproject/

Deixe a constante DATABASES deste jeito:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': os.environ.get('DB_NAME', 'nome_do_banco'),
        'USER': os.environ.get('DB_USER', 'nome_do_user'),
        'PASSWORD': os.environ.get('DB_PASS', 'senha_do_user'),
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

Observe que você deve por o seu banco que criou previamente, como também as credenciais do seu usário, basicamente assim:

  • DB_NAME: nome do banco de dados;
  • DB_USER: nome do usuário que você criou previamente;
  • DB_PASS: senha do usuário;
  • HOST:  pode deixar localhost, já que o servidor  é  a sua máquina;
  • PORT: se vocẽ não mudou, 5432 é a correta;

Se você quiser entender um pouco mais sobre as configurações do Django e também criar um projeto do 0 comigo, eu tenho uma série neste blog e ela começa aqui.

Rodando as migrations

Agora é hora de de fazer a prova real.

Para quem não sabe o Django vem com um admin pronto e uma estrutura de usuários e hierarquia.

Podemos testar isso para validar a integração.

Então abra o terminal novamente e digite

python manage.py migrate

Você deve ver algo parecido com a imagem abaixo:

migrate com postgres

Só por esses ‘OKs’ já podemos validar que foi um sucesso

Porém vou mostrar na prática que os dados estão sendo inseridos.

E como não é o foco deste tutorial mas é um tópico de muita importância eu explico as migrations neste post, leia se quer se aprofundar um pouco mais.

Inserindo alguns usuários no admin e verificando no banco

Vamos rodar nosso projeto para poder adicionar os usuários

Abra o terminal e vá até a pasta myproject, que contem o arquivo manage.py, digite o seguinte comando:

python manage.py createsuperuser

Com este comando criaremos nosso usuário para usar a área administrativa,

Digite seu usário e senha e não se esqueça destas credenciais, vamos utilizar mais adiante

Agora vamos rodar o Django, com o seguinte comando:

python manage.py runserver

Abra o admin no endereço: http://127.0.0.1:8000/admin, no seu navegador de preferência

tela django admin

Utilize suas credenciais criadas previamente para fazer o login

Já logado, clique em Users, e adicione alguns utilizando o botão Save and add another

users admin django

Agora abra o PgAdmin, para verificarmos se os dados persistiram

Vá em:

Servers > localhost > Databases > seubanco > Schemas > Tables

Encontre a tabela auth_user e clique com o botão direito nela

Depois clique em:

View/Edit Data > All Rows

Deverá receber uma tela semelhante a esta

dados postgres

Pronto! agora vimos como encontrar os dados no PgAdmin e nos certificamos que eles estão sendo salvos aonde configuramos

Conclusão

Primeiramente vimos como instalar o PostgreSQL em Windows e Linux,

Depois instalamos uma ferramenta chamada PgAdmin para nos auxiliar na visualização de dados

Então criamos nosso projeto novo e configuramos o Django para que ele pudesse se conectar ao PostgreSQL

E por fim rodamos as migrations e fizemos um teste visualizando os dados inseridos no BD.

Confira também o nosso canal do Youtube com muito conteúdo sobre programação, clicando aqui.

Pessoal, agradeço a todos por lerem até o fim, se possível compartilhem com os amigos interessados em Django e se inscrevam na nossa lista de e-mail para não perder as novidades.

Caso haja alguma dúvida ou crítica, comentem abaixo que responderei assim que possível, obrigado!

Subscribe
Notify of
guest

9 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Thallison Raniere

Muito bom, poderia adicionar também sobre os novos campos que podem ser utilizados pelo Django junto com o Postgres principalmente o HStoreField: https://docs.djangoproject.com/pt-br/2.1/ref/contrib/postgres/fields/#querying-hstorefield uma saída pra quem fica pensando que esses bancos nosql atuais são a unica solução para os problemas atuais.

Battisti

Opa Thallison, com certeza, próximo passo é aprofundar um pouco mais nas vantagens do PostgreSQL, inclusive a busca full text que ele proporciona, abraço!

Paulo Lima

Meus parabéns depois de um tempo de procura encontrei o conteúdo que precisava e ainda mais, em português!

Continue assim, ajudará muitas pessoas!

Battisti

valeu Paulo, pode deixar que vamos continuar! 😀

Isaac

Olá, parabéns pelos tutoriais, são muito bons.
Eu venho seguindo seu tutorial de Django e está setado em SQlite, posso depois alterar para PostegreSQL ou tenho que refazer todo o blog?

Battisti

oi Isaac, pode sim, mas depois vai ter que rodar as migrations novamente.

Iago

Oi, Matheus! Fiquei com uma dúvida de como inserir no db usando PostegreSQL depois de configurar em settings Poderia me dar alguma dica?

Battisti

oi Iago, a ideia é a mesma em qualquer banco, o framework abstrair esta parte, você só muda a conexão com o banco de dados.

matheus feitosa

Me ajudou muito, obrigado por compartilhar!