Alura > Cursos de Programação > Cursos de Python > Conteúdos de Python > Primeiras aulas do curso Flask: avançando no desenvolvimento web com Python

Flask: avançando no desenvolvimento web com Python

Persistência com MySQL - Apresentação

Bem-vindo a esse curso de Flask. Meu nome é Bruno Divino. Faço parte do time de instrutores da Alura. E como uma descrição da minha aparência, sou um homem caucasiano de cabelo castanho, olhos verdes, bigode, estou usando uma camisa preta e atrás de mim tem uma estante cheia de livros.

Então agora vamos falar sobre o curso. Para quem é esse curso? É para aquela pessoa que está interessada em aprender mais sobre o desenvolvimento web back-end utilizando o Python e seus frameworks e mais precisamente um micro framework Flask. Já é interessante que você tenha algum conhecimento prévio com o Flask.

Saber exatamente do que se trata o Flask e algumas das suas funções mais básicas, começar instanciando uma aplicação, como, por exemplo. Quais são os pré-requisitos para fazer esse curso? O conhecimento prévio de Flask que mencionei.

Temos um curso bem interessante aqui na plataforma a respeito dessa iniciação com o Flask, em como instanciar a sua primeira aplicação com o Flask, do que se trata, o que é um micro framework, porquê o Flask é um micro framework e também quais são as vantagens do Flask em relação a outros frameworks que existem por aí com o Python e com o desenvolvimento web back-end.

E também é necessário um conhecimento em SQL, mais especificamente no gerenciador de banco de dados MySQL. Também temos cursos na plataforma a respeito, tanto de SQL quanto MySQL. Então o que vamos fazer é pegar um projeto que temos lá desse outro curso de Flask aqui da plataforma que é o projeto de Jogoteca que vai ser essa lista de jogos que podemos fazer.

Vamos fazer uma aplicação web, um web site com uma lista de jogos em que podemos adicionar novos jogos, retirar novos jogos, editar novos jogos e até fazer login na nossa aplicação. Tem todos um processo de validação. Então vamos pegar esse projeto e vamos incrementar ele com uma integração com o banco de dados, com MySQL.

Vamos utilizar um ORM chamado SQL Alchemy e vamos utilizar um validador de formulários, um integrador com formulários que é o Flask WTForms. E várias outras ferramentas também e boas práticas que vamos aprender ao longo desse curso e desenvolvendo juntos esse projeto. Então vamos começar?

Persistência com MySQL - Entendendo a persistência

Vamos continuar a trabalhar no projeto da Jogoteca, vamos desenvolvê-lo mais. Antes, vamos recapitular como o tínhamos deixado lá na última aula do último curso. O que tínhamos feito era uma aplicação do lado do servidor com a linguagem Python e com framework Flask que fizesse aparecer do lado do navegador, do lado do cliente, uma lista de jogos em que podíamos adicionar novos jogos, mas não antes de fazermos um login de usuário.

Ou seja, ainda tinha uma autenticação que fazíamos ali que deixava a nossa aplicação bem mais robusta, bem mais interessante também. Só que tinha um pequeno problema, porque se adicionássemos novos jogos legais e, de repente, fôssemos ao servidor e déssemos um Rerun na aplicação ou o computador fosse desligado e religássemos o computador mais tarde, esses novos itens que adicionamos não iriam mais estar lá, porque não existia essa permanência de dados através do momento em que incluíssemos um novo jogo ao lado do navegador.

Vamos dar uma olhada em como isso realmente funcionava na prática. Tenho o código da nossa aplicação. Vou entrar no jogoteca.py. Se quisermos adicionar permanentemente um jogo, temos que adicionar por aqui mesmo, pelo back-end.

O que fazíamos era criar uma classe Jogo e para cada item da classe instanciávamos um objeto. Então tínhamos que instanciar objetos para cada item. E esses itens permaneciam, só que tínhamos que fazer isso pelo back-end. Isso não é interessante.

O que é legal é que a pessoa no front-end, no navegador, consiga fazer com que esses dados postos do front-end persistam. E fazemos a mesma coisa para usuário. Os usuários também tinham que criar uma classe e instanciar objetos. Vamos dar início. Vou acessar a nossa aplicação no navegador.

Então para eu adicionar um novo item tinha que colocar /novo na URL. Já estou logado, então ele não pediu para fazer login. Vou incluir um novo jogo chamado Celeste que é um jogo de Puzzle do PC e vou salvar. Inclui um novo item. Antes tinha três e agora tem quatro itens.

Se voltar na aplicação e der um Rerun ou desligar o computador, voltar depois, vou voltar no navegador, dar um Refresh e olha só, o item desapareceu. Então era isso que acontecia. Se viermos por aqui e adicionarmos um novo item por aqui, o item desaparecia. E é isso que vamos tentar consertar.

E vamos tentar consertar isso utilizando um banco de dados que vai se conectar com o nosso servidor e que vai permitir que o cliente no navegador inclua um novo item que vai se comunicar com o banco de dados e esse item vai permanecer, esse dado vai permanecer.

Vamos fazer isso através da criação de duas tabelas no banco de dados, a tabela de Jogos e a tabela de Usuários. Vamos fazer com que a nossa aplicação consiga criar itens diretamente no banco de dados, ler novos itens no banco de dados, alterar itens do banco de dados e deletar itens do banco de dados.

Então Create, Read, Update, Delete, queremos que faça isso. Essas funções acabam formando o acrônimo CRUD que é um sistema que é bem presente no back-end e na maioria das aplicações Web. Para a maioria das aplicações que necessitam de uma comunicação com o banco de dados, é necessário usar esse sistema do CRUD que vai permitir que você crie, leia, altere e delete também os itens.

Então é isso que vamos fazer, vamos criar um CRUD completo dentro da nossa aplicação. E o banco de dados que escolhemos para utilizar vai ser o MySQL em conjunto com o ORM do SQL Alchemy. O SQL Alchemy, na medida que as aulas passem, vou explicar um pouco mais sobre ele.

E o ORM é basicamente algo que se comunica com o banco de dados, que vai nos ajudar a nos comunicarmos com o banco de dados. Mas vou deixar conteúdo extra para caso você queira aprender um pouco mais sobre o que é o ORM.

Persistência com MySQL - Gerando banco de dados

Observação: O script citado pelo instrutor durante a aula, pode ser encontrado nesta atividade.

Vamos colocar a mão na massa e começar a alterar o código e avançar na aplicação. Vamos fazer isso criando o nosso banco de dados para a nossa aplicação Jogoteca. Mas antes de mais nada, precisamos ter instalado o MySQL da nossa máquina.

Já instalei na minha. Vou deixar uma aba de Preparando o Ambiente nessa aula mesmo com o passo a passo de como você pode fazer para instalar na sua máquina também. Não se preocupe quanto a isso. As formas que podemos fazer para criar o nosso banco de dados é acessar o terminal do MySQL e colocar linha por linha de código para criar as duas tabelas de Jogos e Usuários e também poderia colocar linha por linha de código inserindo cada item na tabela.

Mas isso ia demorar muito e não é muito o nosso foco no curso. Então deixei pronto um script para fazermos isso automaticamente. Então vamos na pasta jogoteca e criar um arquivo Python. Vou colocar o nome desse arquivo de “prepara_banco”.

Vou colocar o script. Vou deixar disponível esse script nessa aula para vocês também. E a primeira coisa que esse script faz é vir aqui e se conectar com o nosso MySQL. Quando instalamos o MySQL, ele pede para criarmos um usuário. No meu caso eu criei o usuário root e coloquei a senha admin.

Mas no seu caso pode ser diferente. Você pode criar múltiplos usuários também. Seja como for, se você quiser, é só alterar e o script e vai funcionar de qualquer maneira. Em seguida, ele já vai criar o banco de dados da Jogoteca. Vai criar as duas tabelas com todas as colunas que queríamos, a coluna id, nome, console, enfim, vai criar tudo certo para nós. Vai criar uma tabela de usuário e inserir em cada tabela os itens.

Na tabela de usuários, ele vai inserir os usuários que já tínhamos criado no curso anterior e inserir alguns jogos na tabela de jogos mais do que tínhamos criado anteriormente para termos mais alguma coisa para brincarmos ao decorrer do curso. Só que antes de rodarmos esse script, a própria IDE indica que existe um problema, está faltando uma biblioteca. Uma biblioteca chamada MySQL Connector.

O que é essa biblioteca? Essa biblioteca vai fazer a ponte entre a linguagem Python e o MySQL. Então precisamos dela para que esse script consiga funcionar. Vamos instalar o MySQL Connector. Vamos fazer isso através do terminal da aplicação mesmo. Vamos utilizar um instalador do pip. Então vamos colocar, pip install mysql-connector-python==8.0.28. A versão que vamos utilizar é a versão 8.0.28.

Então é só darmos um "Enter" e o pip vai se encarregar de instalar tudo para nós. Então se voltarmos, a própria IDE já vai se autocorrigir e já vai dizer que está tudo certo agora para rodarmos esse script e basta rodarmos e ele vai criar o nosso banco de dados.

Então ele vai criar as duas tabelas e vai dar "Ok" e mostrar os usuários que temos. O que é interessante é que apesar de utilizarmos o nosso terminal da nossa aplicação que está nesse ambiente virtual criado para a nossa aplicação, o nosso banco de dados foi criado no nosso computador. Então, se eu abrir outro terminal separado... Vamos fazer um teste.

Se eu acessar o terminal do MySQL, mysql -u root -p. Vou colocar a senha admin. Acessei o terminal. Aqui não estou de forma alguma no terminal da minha aplicação. Estou no terminal do meu sistema, do meu computador mesmo. Vou colocar para ele me mostrar todas as bases de dados, show databases.

Ele vai me mostrar todos os bancos de dados e a Jogoteca. Deixa eu limpar. Se eu colocar, use jogoteca e colocar, select + from jogos, por exemplo. Vou pegar para ele selecionar tudo de jogos. Ele vai me mostrar todos os jogos que o script acabou de me adicionar. Então isso é interessante. Então o banco de dados não foi criado no nosso ambiente virtual, ele foi criado no nosso computador.

Criei o banco de dados. E agora? Ele já está conectado com a nossa aplicação? Não exatamente. Só criei. Esse script está dentro da aplicação, mas ele poderia não estar. Ele poderia estar fora, eu poderia estar usando outra IDE para rodar ele. Então criei o banco de dados, mas ele ainda não está conectado com a aplicação. E vamos fazer essa conexão no próximo vídeo.

Sobre o curso Flask: avançando no desenvolvimento web com Python

O curso Flask: avançando no desenvolvimento web com Python possui 206 minutos de vídeos, em um total de 62 atividades. Gostou? Conheça nossos outros cursos de Python em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Python acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas