0% acharam este documento útil (0 voto)
9 visualizações21 páginas

2014 PythonParaWeb2

Enviado por

Rodrigo Carvalho
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
9 visualizações21 páginas

2014 PythonParaWeb2

Enviado por

Rodrigo Carvalho
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Programando para

Web com Python


Sematec 2014
Palestrantes:
Álvaro Oliveira e Guilherme Esmeraldo
Roteiro

 Bancos de Dados com o PeeWee


 Interfaces Dinâmicas com Cheetah
 Deixando tudo junto e misturado!
O que é um ORM?

“(...) é uma técnica de desenvolvimento utilizada


para reduzir a impedância da programação
orientada aos objetos utilizando bancos de dados
relacionais” (Wikipedia)
O que é um ORM?

 Em outras palavras:
– É transformar isso:


String sql = "SELECT ... FROM persons WHERE id = 10";

DbCommanzd cmd = new DbCommand(connection, sql);

Result res = [Link]();

String name = res[0]["FIRST_NAME"];”
O que é um ORM?

 Em outras palavras:
– Nisso:

Person p = [Link](10);
String name = [Link];
Apresentando PeeWee

 Um ORM, com recursos expressivos:


– Pequeno
– Escrito em Python (2.6+ e 3.2+)
– Suporte a SQLite, MySQL e PostgreSQL
– Suporte a extensões:

postgres hstore/json/arrays,

sqlite full-text-search,

schema migrations,

E mais.
Com Python e Peewee, tudo é...

 Rápido
– Definição de Modelo
– Armazenando Dados
– Recuperando Dados
– Editando e Excluindo Dados
Definição do Modelo
from peewee import * Tipos:

db = SqliteDatabase('[Link]') ●
CharField, TextField

DateTimeField, DateField,
class Tabela(Model): TimeField
c1 = CharField() ●
IntegerField, BigIntegerField
c2 = DateField() ●
BooleanField
c3 = BooleanField() ●
FloatField, DoubleField

DecimalField
class Meta: ●
PrimaryKeyField, ForeignKeyField
database = db ●
BlobField

Tabela.create_table()

# db.create_tables([Tabela])
Armazenando Dados

from datetime import date

novo = Tabela(c1 = 'valor', c2 = birthday=date(2014, 10, 16), c3=True)

[Link]()
Recuperando Dados

Um único registro
velho = [Link]().where(Tabela.c1 == 'valor').get()
# ou
# velho = [Link](Tabela.c1 == 'valor')


Mais de um...
for velho in [Link]()
print velho.c1, velho.c2, velho.c3

# ou
# velhos = [ velho for velho in [Link]() ]
Recuperando Dados

Outros exemplos
velhos = [ velho for velho in [Link]().where(Tabela.c3 == True) ]
...
velhos = [ velho for velho in [Link]().order_by(Tabela.c1) ]
...
velhos = [ velho for velho in [Link]().order_by([Link]()) ]
...
consulta = (Tabela
.select()
.where(Tabela.c2 > date(2014, 10, 12) & (Tabela.c2 < date(2014, 10, 18))

velhos = [x for x in consulta ]


Editando e Excluindo Dados

Primeiro: recupera-se o(s) registro(s)
velho = [Link]().where(Tabela.c1 == 'valor').get()


Segundo: excluir / editar
# excluir
velho.delete_instance()

# editar
velho.c1 = “novo valor”
[Link]()
O que é um Template Engine?

“(...) é um componente de software que é


designado a combinar um ou mais modelos com
um modelo de dados para produzir um ou mais
documentos como resultado.” (Wikipedia)
O que é um Template Engine?

Em outras palavras:
– É transformar isso:

#for $cliente in $clientes


print $[Link], $[Link]
O que é um Template Engine?

Em outras palavras:
– Nisso:

Álvaro 1234-1234
Guilherme 4321-4321
Fulano 9999-9999
Ciclano 6666-6666
Beltrano 3333-3333
...
Apresentando o Cheetah

 É um Template Engine, que:


– É open source,
– Possui uma sintaxe muito simples,
– Foi escrito em python,
– Pode ser utilizado sozinho ou combinado*,
– É flexível,
– Utilizado nos maiores empresas do mundo,
– E possui uma grande comunidade dando
suporte.
Com Python e Cheetah, tudo é...
 Rápido
– Como funciona
– Sintaxe do Cheetah
– Exemplos.
Como Funciona

from [Link] import Template

#1

namespace = {'dados': dados}
mt = Template(tmp, searchList=[namespace])
print [Link]()

#2
...
mt = Template(file='arquivo_template.tml')
[Link] = dados
print [Link]()
Sintaxe do Cheetah
## comment text

#break #continue #from #import #pass

#for $ variable in $ container ... #end for

#include filename_expression

#if...#else if...#else...#end if

#raw... #end raw

#repeat $ times ... #end repeat

#set $ variable = expression

#while $ condition ... #end while


Referência: [Link]
Deixando tudo junto e misturado!

● Mãos à Obra!
Duvidas?

Você também pode gostar