Elixir, una capa de abstracción sobre SQLAlchemy

written by uve 1 November 2010

Elixir es un proyecto que trata de reemplazar la extensión declarative de SQLAlchemy, y la verdad es que merece la pena tenerlo en consideración. Voy a poner un ejemplo de como utilizar Elixir, siguiendo la línea de los dos artículos anteriores.

 

from elixir import *

metadata.bind = "sqlite:///chunks.db"
metadata.bind.echo = True

class Activity(Entity):
    id = Field(Integer, primary_key=True)
    name = Field(String(80))
    description = Field(UnicodeText, nullable=True)
    schedule = Field(DateTime, nullable=True)
    chunks = ManyToOne('Chunk')

    def __repr__(self):
       return "<Activity '%s'>" % self.name

class Chunk(Entity):
    id = Field(Integer, primary_key=True)
    description = Field(UnicodeText)
    activity = OneToMany('Activity')

    def __repr__(self):
       return "<Chunk '%s'>" % self.description

Creo que está lo suficientemente claro como para explicar nada. Simplemente un detalle a tener en cuenta, cuando creamos una relación, es necesario crearla en ambas clases. Por ejemplo, al incluir un OneToMany en Chunk (básicamente un Foreign Key) debemos también incluir un ManyToOne en Activity.

 

Tags

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.