Conociendo Elixir Framework para Python

python-icon Cuando comencé a tantear con bases de datos en python pensé (realmente tendré que generar una clase de persistencia completa para cada entidad?) y no es solo eso, sino manejar cuestiones como las relaciones entre entidades y un sin fin mas de etc’s que si se pueden, pero requiere mucho mas trabajo haciendo algo que quizá un framework al estilo Django puede hacer.

La primer solucion propuesta es, de hecho, hacer un sistema en Django y usar otro framework para que actue como una web app local, como lo hace Hotot.

La segunda es pues buscarle un framework que haga lo mismo que Django pero orientado a aplicaciones de escritorio, y es cuando encontre Elixir, un framework que se orienta en crear una capa declarativa permitiendo crear clases de modelos simples que se mapeen directamente a una base de datos relacional. Esto sumado con SQLite3 permiten crear sistemas de escritorio de una forma muy simple, y por sistemas me refiero a un software que requiere un modelo mas complejo para el manejo de datos.

Como mencionaba antes, elixir es muy parecido a Django, saltándonos la parte de crear un proyecto, configurarlo y agregar una aplicación, aquí únicamente vamos a instanciar nuestra BD y en seguida creamos nuestro modelo para comenzar a trabajar.

Un ejemplo simple de Modelo para Elixir es el siguiente:

[python]
from elixir import *
metadata.bind ="sqlite:///movies.sqlite"
metadata.bind.echo = True
class Movie (Entity):
title = Field(Unicode(30))
year = Field(Integer)
description = Field(UnicodeText)

def __repr__(self):
return ‘Pelicula "%s" (%d)>’ % (self.title,self.year)
[/python]

En primera instancia importamos las librerias de elixir.

Las siguientes dos lineas nos permiten:

  1. Instanciar nuestra BD , si no existe el archivo lo creara al inicializar la entidad
  2. Mostrar la salida de syntaxis a la BD que esta realizando elixir, de esta forma podremos ver que es lo que hace exactamente.

En seguida creamos nuestro modelo, como parámetro recibe la clase Entity, encargada de definir las clases de entidad, a la cual le agregamos 3 atributos:

  1. Titulo
  2. Año
  3. Descripcion

Elixir ya da por hecho que se creara un campo id autoincremental para los indices, razón por la cual no lo agregamos. Finalmente definimos lo que en Java viene siendo el “toString()” o bien, la representación del objeto en una cadena de texto.

Posteriormente se puede abrir una instancia de python shell para hacer unas pruebas:

Primero le pedimos que cree las tablas ( o tabla en este caso) para el modelo

[python]
from model import *
setup_all()
create_all()
[/python]

De esta forma nos mostrara la tabla que se ha creado en nuestra BD:

[sql]CREATE TABLE model_movie (
id INTEGER NOT NULL,
title VARCHAR(30),
year INTEGER,
description TEXT,
PRIMARY KEY (id)
)[/sql]

Y para insertar por ejemplo una nueva pelicula es tan simple como:
[python]
Movie(title="Blade Runner" , year = 1982)
session.commit()
[/python]

Muy importante el session.comit() ya que le decimos que ejecute los cambios.

Para obtener nuestro nuevo objeto podemos usar
[python]
Movie.query.all()
[/python]

Asi nos mostrara los objetos en la BD:

Pelicula “Blade Runner” (1982)>

Como podemos ver, es muy sencillo comenzar a definir nuestra capa de datos en un sistema en python gracias a frameworks como estos y mejor invertir tiempo en las capas superiores. Personalmente estoy encantado jejeje.

*Por cierto, apenas voy conociendo el Framework y el mundillo de python en éste tema, asi que si vez un error no dudes en comentarlo 🙂

Anuncios

3 comentarios en “Conociendo Elixir Framework para Python

Cuentanos tu reaccion

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s