Python Brasil – Telegram
Python Brasil
25.7K subscribers
607 photos
12 videos
15 files
3.57K links
Canal para compartilhamento de links, cursos vagas e eventos sobre Python.

Links, contato e freelas: https://linktr.ee/python.brasil

@laenderoliveira
Download Telegram
try:
Book.create_table()
except peewee.OperationalError:
print 'Tabela Book ja existe!'



Após executarmos o código, será criado um arquivo de nome codigo_avulso.db no mesmo diretório do nosso arquivo main.py, contendo as tabelas Author e Book. A estrutura do diretório ficou assim:
.
├── codigo_avulso.db
├── main.py
├── model.py



Inserindo dados no banco
Agora, vamos popular nosso banco com alguns autores e seus respectivos livros. Isso pode ser feito de dois modos. Através do método create, quando desejamos inserir um registro apenas; ou pelo método insert_many, quando desejamos inserir vários registros de uma vez em uma mesma tabela.
# Inserimos um autor de nome "H. G. Wells" na tabela 'Author'
author_1 = Author.create(name='H. G. Wells')

book_1 = {
'noscript': 'A Máquina do Tempo',
'author': author_1,
}

book_2 = {
'noscript': 'Guerra dos Mundos',
'author': author_1,
}

# Inserimos um autor de nome "Julio Verne" na tabela 'Author'
author_2 = Author.create(name='Julio Verne')

book_3 = {
'noscript': 'Volta ao Mundo em 80 Dias',
'author': author_2,
}

book_4 = {
'noscript': 'Vinte Mil Leguas Submarinas',
'author_id': author_1,
}

books = [book_1, book_2, book_3, book_4]

# Inserimos os quatro livros na tabela 'Book'
Book.insert_many(books).execute()



Consultando dados no banco
O Peewee possui comandos destinados a realizar consultas no banco. De maneira semelhante ao conhecido SELECT. Podemos fazer essa consulta de duas maneiras. Se desejamos o primeiro registro que corresponda a nossa pesquisa, podemos utilizar o método get().
book = Book.get(Book.noscript == "Volta ao Mundo em 80 Dias").get()
book.noscript



Porém, se desejamos mais de um registro, utilizamos o método select. Por exemplo, para consultar todos os livros escritos pelo autor "H. G. Wells".
books = Book.select().join(Author).where(Author.name=='H. G. Wells')

# Exibe a quantidade de registros que corresponde a nossa pesquisa
print books.count()

for book in books:
book.noscript

# Resultado:
# * A Máquina do Tempo
# * Guerra dos Mundos
# * Vinte Mil Leguas Submarinas



Também podemos utilizar outras comandos do SQL como limit e group (para mais detalhes, ver a documentação aqui (http://peewee.readthedocs.io/en/latest/index.html)).
Alterando dados no banco
Alterar dados também é bem simples. No exemplo anterior, se observarmos o resultado da consulta dos livros do autor "H. G. Wells", iremos nos deparar com o livro de título "Vinte Mil Léguas Submarinas". Se você, caro leitor, gosta de contos de ficção-científica, sabe que esta obra foi escrito por "Julio Verne", coincidentemente um dos autores que também estão cadastrados em nosso banco. Sendo assim, vamos corrigir o autor do respectivo livro.
Primeiro vamos buscar o registro do autor e do livro:
new_author = Author.get(Author.name == 'Julio Verne')
book = Book.get(Book.noscript=="Vinte Mil Leguas Submarinas")



Agora vamos alterar o autor e gravar essa alteração no banco.
# Alteramos o autor do livro
book.author = new_author

# Salvamos a alteração no banco
book.save()



Deletando dados do banco
Assim como as operações anteriores, também podemos deletar registros do banco de maneira bem prática. Como exemplo, vamos deletar o livro "Guerra dos Mundos" do nosso banco de dados.
# Buscamos o livro que desejamos excluir do banco
book = Book.get(Book.noscript=="Guerra dos Mundos")

# Excluimos o livro do banco
book.delete_instance()



Simples não?
Conclusão
É isso pessoal. Este tutorial foi uma introdução bem enxuta sobre o Peewee. Ainda existem muitos tópicos que não abordei aqui, como a criação de primary_key, de campos many2many entre outros recursos, pois foge do escopo deste tutorial. Se você gostou do ORM, aconselho a dar uma olhada também na sua documentação, para conseguir extrair todo o potencial da ferramenta. A utilização de um ORM evita que o desenvolvedor perca tempo escrevendo query SQL e foque totalmente no desenolvimento de código.
O Peewee também possui suporte ao flamework flask, então dependendo do tamanho do projeto, pode ser uma alternativa interessante no lugar de ORM mais complexos como o SQLAlchemy.
É isso pessoal. Obrigado pela leitura e até o próximo tutorial!
Referências
Documentação do Peewee (em inglês) (http://peewee.readthedocs.io/en/latest/index.html)
An Intro to peewee – Another Python ORM (https://www.blog.pythonlibrary.org/2014/07/17/an-intro-to-peewee-another-python-orm/)
Introduction to peewee (http://jonathansoma.com/tutorials/webapps/intro-to-peewee/)
Introdução à Linguagem SQL (https://www.novatec.com.br/livros/introducao-sql/)
http://blog.dunderlabs.com/django-boilerplate-a-estrutura-de-projeto-django-que-tenho-usado.html
Vamos falar sobre estruturas de projeto Django? E esse é pra ser o primeiro de uma série sobre Django, pra quem sabe servir como ajuda pra quem tiver iniciando. Todo feedback é super bem vindo :D
Este ano, a PythonBrasil[13] conta com 16 palestras ministradas por mulheres. Destas, 13 ministradas por PyLadies ativas em suas comunidades locais. E este número ainda pode aumentar já que a conferência ainda está confirmando a sua grade do evento! Como no ano passado, estamos lançando uma campanha de apoio financeiro para ajudar as PyLadies que de outra maneira não poderiam comparecer ao evento. Qualquer ajuda é muito bem vinda <3 Se não puder ajudar financeiramente, ajude compartilhando essa mensagem <3 Vamos ajudar a aumentar a visibilidade das mulheres na tecnologia! https://www.catarse.me/pyladies_na_pythonbrasil_13?ref=project_link
Confirmada a palestra "Análise de imagens e machine learning utilizando Python e openCV" - Paula Santos #pybr13https://t.co/FIc4oLKvTA
Forwarded from Fernando Masanori