sqlalchemy and pycamp.orm
DESCRIPTION
Estas son las filminas de la charla que dí sobre SQLAlchemy y pycamp.orm en el PyDay realizado en Cordoba, Argentina, 2011. El video se encuentra online en: http://python.org.ar/pyar/PycampORMTRANSCRIPT
PYCAMP.ORMHACIENDO *FACIL* USAR SQLALCHEMY
... y ...de que se trata ?
/* momento de suspenso */
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
NUESTRO PROPOSITO
BASE DE DATOS RELACIONAL
INTERACTUAMOS CON LA BASE DE DATOS
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
INTERACTUAR CON LA DB
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
BASES DE DATOS Y SUS DIALECTOS言語 язык زبان
MISMAS QUERYS, DIFERENTES MOTORES / BASES DE DATOS
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
ORM / OBJECT RELATION MAPPER
言語
язык
زبان
SQLALCHEMYTHE PYTHON SQL
TOOLKIT
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
EJEMPLOS / FREDDY VS JASON言語
SQLALCHEMYORM
言語
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
ENTONCES ? .../* BASTA DE DIBUJITOS */
BASE DE DATOS RELACIONAL
TABLAS
COLUMNAS
FILAS
OBJETOS PYTHONYES!!! ^^SQLALCHEMY
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
HACIENDO ALQUIMIA, INGREDENTES:
from sqlalchemy.orm import sessionmakerfrom sqlalchemy.orm import mapperfrom sqlalchemy import MetaDatafrom sqlalchemy import create_engine
ENGINE
SESIONES
METADATAMAPPER
+
== PODEROSA ALQUIMIA
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
ORDEN DE LOS INGREDIENTES
1- CREAR ENGINE2- BINDEAR CONTRA NUESTRO ENGINE... LISTO =)
/* LA CHARLA NO ERA DE PYCAMP.ORM ?! o.O' */
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
PREPARANDO EL ENGINE Y BINDEANDO
from sqlalchemy import create_engine url = 'mysql://user:passwd@host/dbname'engine = create_engine(url)
/* LA CHARLA NO ERA DE PYCAMP.ORM ?! o.O' */
/* mission 1 complete! */
from sqlalchemy.orm import sessionmakersesion = sessionmaker(bind=engine)from sqlalchemy import MetaDatameta = MetaData(bind=engine)
/* Very nice ! ^^ */
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
*COPADO*!!! ... PERO ... Y PYCAMP.ORM ?/* ME ABURRO ... - . - ... */
Fotos sacadas del flickr de Horacio Duran (perrito666)http://www.flickr.com/photos/perrito667/sets/72157626271479985/with/5575872718/
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
ONE RING TWO OBJECTS TO RULE THEM ALL!!!from pycamp.orm.mapper import Databasemydb = Database('pycamp', user='pycamp', passwd='pycamp', engine='mysql')otherdb = Database('pyday', user='pyday', passwd='pyday', engine='posgresql') from pycamp.orm.mapper import DatabaseManagermanager = DatabaseManager()manager.add(mydb, otherdb) import datetimenewreg = manager.mysql.pycamp.test1()newreg.name = 'foo bar'newreg.birthdate = datetime.date.today()newreg.contact_id = '31337'
sesion = manager.mysql.pycamp.session()sesion.add(newreg)try: sesion.commit()except Exception,ex: os.system('halt')
manager.mysql.pycamp.enginemanager.mysql.pycamp.hostmanager.mysql.pycamp.metamanager.mysql.pycamp.namemanager.mysql.pycamp.passwdmanager.mysql.pycamp.sessionmanager.mysql.pycamp.test1manager.mysql.pycamp.user
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
CASTING THE SPELLS
MAPPER(CLASS, TABLE) for kw in db.meta.tables.keys():
obj = type(str(kw), (object,), {}) setattr(db, kw, obj) mapper(obj, db.meta.tables[kw])
AUTOREFLECT db.meta.reflect(bind=db.engine)
+
== +1 HP
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
MEZCLANDO TODO ...
HORA DE IR AL SHELL ...
AHORA GENERALMENTE SE ROMPE TODOY/O/U NO ANDA NADA COMO UNO LO ESPERA
pycamp.ormHACIENDO FACIL USAR SQLALCHEMY
MUCHAS GRACIAS!!!
PYCAMP.ORMhttps://bitbucket.org/edvm/pycamp.orm/overview
SQLALCHEMYhttp://www.sqlalchemy.org/docs/
/* DONACIONES DE CERVEZAS SERAN BIEN RECIBIDAS ^^ */ */
Emiliano Dalla Verde [email protected]
twitter: @edvmirc freenode: x-ip
Que tengan un buen dia y recuerden ... traten de usar una base de datos orientada a Objetos u/o/y NoSQL ^^ /* cheatsheet
- Zope - MongoDB*/