Your SlideShare is downloading. ×
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Leandro Lameiro - Extensões para o Elixir - Apresentação na PyConBrasil 2008

856

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
856
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Extensões para o Elixir Leandro Lameiro lameiro@gmail.com PyConBrasil 2008
  • 2. Programa  SQLAlchemy  Elixir  Extensões legais existentes  Como fazer suas próprias extensões
  • 3. SQLAlchemy?  SQLAlchemy é um toolkit SQL e um mapeador objeto-relacional.  Toolkit SQL - Permite escrever SQL em Python (sem depender de peculiaridades de bancos)
  • 4. Mapeamento objeto o que?!  Mapeamento objeto-relacional: Uma maneira de levar objetos para bancos relacionais.  A maioria das aplicações hoje são escritos em linguagem OO.  OO e relacional são sistemas de tipos diferentes. Levar o mundo OO para o mundo relacional não é sempre fácil.  Por exemplo, é difícil exprimir em modelo relacional o polimorfismo.  Ou exprimir em OO o constraint unique.
  • 5. Ahh, SQLAlchemy  Permite definir como os seus objetos vão parar no banco.  Você tem controle total, inclusive de continuar usando o SQL.  Algo parecido com o Hibernate, mas sem os XMLs.  Suporte a vários bancos, multiplos bancos simulatâneos, etc.
  • 6. Elixir?  ActiveRecord para Python, sobre o SQLAlchemy.  É um pattern descrito no Patterns of Enterprise Application Architecture – Martin Fowler  É uma maneira simples de persistir os dados sem precisar pensar muito, sem saber SQL.  Uma tabela por classe, uma linha por instância. (mais ou menos...)  Dá métodos de busca, inserção etc.
  • 7. Chega de blá-blá-blá: Quero ver código!  Criar objeto: aluno = Aluno()  Ler atributos: aluno.nome  Escrever atributos: aluno.nome = 'Foobar'  Elixir/SQLAlchemy cuidam de montar o SQL correto (no caso INSERT, SELECT e UPDATE, respectivamente).
  • 8. Elixir class Aluno(Entity): nome = Field(Text) telefone = Field(Text) idade = Field(Integer) materias = ManyToMany('Materia') class Materia(Entity): nome = Field(Text) alunos = ManyToMany('Aluno')
  • 9. Elixir mariazinha = Aluno( nome='Mariazinha', idade=12, telefone='1234-5678' ) matematica = Materia( nome='Matemática' ) matematica.alunos.append(mariazinha)
  • 10. Elixir In [1]: print mariazinha.materias [<Materia nome='Matemática'>]  Depois de inserir (append) na lista, o Elixir trata de inserir no banco de dados, ligar as chaves primárias/estrangeiras etc.  Nem uma linhazinha de SQL. Nada de chave primária, chave estrangeira, tabela intermediária. Nada.
  • 11. Extensões legais  Encriptação  Campos automaticamente encriptados  Wiki  Colunas com controle de versão e suporte a consulta de versões antigas, reversão etc.  Validação  Validação de formato, limites, etc.  E é muito fácil fazer outras!
  • 12. Criando sua própria extensão
  • 13. Usando a extensão
  • 14. Referências  http://en.wikipedia.org/wiki/Active_record_pattern  http://en.wikipedia.org/wiki/Object- relational_mapping  Patterns of Enterprise Application Architecture – Martin Fowler  http://en.wikipedia.org/wiki/Object- Relational_impedance_mismatch  http://www.sqlalchemy.org/  http://elixir.ematia.de/trac/wiki 

×