Jugando con SQLAlchemy
Hace ya tiempo que escuché hablar de SQLAlchemy. Para quién no lo conozca, es un toolkit para SQL y posee un ORM. SQLAlchemy es una capa abstracción para la construcción y manipulación de expresiones SQL, pero nos permite mapear de una forma sencilla a objetos Python y funcionar como un ORM.
Lo primero que vamos a ver es como crear unas sencillas tablas (de un experimento con el que ando liado). Empezamos por decidir el engine a utilizar: SQLite.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///chunks.db', echo=True)
Ahora vamos a definir las tablas sobre el catálogo MetaData, el cuál enlazaremos con el engine:
from sqlalchemy import MetaData, Column, Table, ForeignKey
from sqlalchemy import Integer, String, Text, DateTime
metadata = MetaData(bind=engine)
activities_table = Table(
'activities', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(80)),
Column('description', Text, nullable=True),
Column('schedule', DateTime, nullable=True),
)
chunks_table = Table(
'chunks', metadata,
Column('id', Integer, primary_key=True),
Column('description', Text),
Column('activity_id', None, ForeignKey('activities.id'), nullable=True),
)
Una vez definidas las tablas, podemos crearlas de la siguiente forma:
# create tables in database
metadata.create_all()
Pero, ¿cómo trabajar esto desde Python? Hay varias formas para ello. Vamos a mapear las tablas en objetos:
class Activity(object):
def __init__(self, name, description, schedule):
self.name = name
self.description = description
self.schedule = schedule
def __repr__(self):
return "<Activity '%s'>" % self.name
class Chunk(object):
def __init__(self, description, activity_id):
self.description = description
self.activity_id = activity_id
def __repr__(self):
return "<Chunk '%s'>" % self.description
Una vez listos nuestros objetos, toca mapear de verdad:
from sqlalchemy.orm import mapper
mapper(Activity, activities_table)
mapper(Chunk, chunks_table)
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é.
