Extensões para o Elixir
       Leandro Lameiro
     lameiro@gmail.com

      PyConBrasil 2008
Programa

   SQLAlchemy
   Elixir
   Extensões legais existentes
   Como fazer suas próprias extensões
SQLAlchemy?
   SQLAlchemy é um toolkit SQL e um mapeador
    objeto-relacional.
   Toolkit SQL - Permite escrever SQL em...
Mapeamento objeto o que?!

   Mapeamento objeto-relacional: Uma maneira
    de levar objetos para bancos relacionais.
  ...
Ahh, SQLAlchemy

   Permite definir como os seus objetos vão parar
    no banco.
   Você tem controle total, inclusive d...
Elixir?

   ActiveRecord para Python, sobre o
    SQLAlchemy.
   É um pattern descrito no Patterns of Enterprise
    App...
Chega de blá-blá-blá: Quero ver código!
   Criar objeto:      aluno = Aluno()
   Ler atributos:     aluno.nome
   Escre...
Elixir
 class Aluno(Entity):
    nome     = Field(Text)
    telefone = Field(Text)
    idade    = Field(Integer)
    mater...
Elixir

 mariazinha = Aluno(
                       nome='Mariazinha',
                       idade=12,
                  ...
Elixir
In [1]: print mariazinha.materias
[<Materia nome='Matemática'>]


   Depois de inserir (append) na lista, o Elixir...
Extensões legais

   Encriptação
       Campos automaticamente encriptados
   Wiki
       Colunas com controle de vers...
Criando sua própria extensão
Usando a extensão
Referências
   http://en.wikipedia.org/wiki/Active_record_pattern
   http://en.wikipedia.org/wiki/Object-
    relational...
Próximos SlideShares
Carregando em…5
×

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

1.166 visualizações

Publicada em

Publicada em: Tecnologia

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

  1. 1. Extensões para o Elixir Leandro Lameiro lameiro@gmail.com PyConBrasil 2008
  2. 2. Programa  SQLAlchemy  Elixir  Extensões legais existentes  Como fazer suas próprias extensões
  3. 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. 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. 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. 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. 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. 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. 9. Elixir mariazinha = Aluno( nome='Mariazinha', idade=12, telefone='1234-5678' ) matematica = Materia( nome='Matemática' ) matematica.alunos.append(mariazinha)
  10. 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. 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. 12. Criando sua própria extensão
  13. 13. Usando a extensão
  14. 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 

×