15
PYCAMP.ORM HACIENDO *FACIL* USAR SQLALCHEMY ... y ... de que se trata ? /* momento de suspenso */

SQLAlchemy and pycamp.orm

Embed Size (px)

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/PycampORM

Citation preview

Page 1: SQLAlchemy and pycamp.orm

PYCAMP.ORMHACIENDO *FACIL* USAR SQLALCHEMY

... y ...de que se trata ?

/* momento de suspenso */

Page 2: SQLAlchemy and pycamp.orm

pycamp.ormHACIENDO FACIL USAR SQLALCHEMY

NUESTRO PROPOSITO

BASE DE DATOS RELACIONAL

INTERACTUAMOS CON LA BASE DE DATOS

Page 3: SQLAlchemy and pycamp.orm

pycamp.ormHACIENDO FACIL USAR SQLALCHEMY

INTERACTUAR CON LA DB

Page 4: SQLAlchemy and pycamp.orm

pycamp.ormHACIENDO FACIL USAR SQLALCHEMY

BASES DE DATOS Y SUS DIALECTOS言語 язык زبان

MISMAS QUERYS, DIFERENTES MOTORES / BASES DE DATOS

Page 5: SQLAlchemy and pycamp.orm

pycamp.ormHACIENDO FACIL USAR SQLALCHEMY

ORM / OBJECT RELATION MAPPER

言語

язык

زبان

SQLALCHEMYTHE PYTHON SQL

TOOLKIT

Page 6: SQLAlchemy and pycamp.orm

pycamp.ormHACIENDO FACIL USAR SQLALCHEMY

EJEMPLOS / FREDDY VS JASON言語

SQLALCHEMYORM

言語

Page 7: SQLAlchemy and pycamp.orm

pycamp.ormHACIENDO FACIL USAR SQLALCHEMY

ENTONCES ? .../* BASTA DE DIBUJITOS */

BASE DE DATOS RELACIONAL

TABLAS

COLUMNAS

FILAS

OBJETOS PYTHONYES!!! ^^SQLALCHEMY

Page 8: SQLAlchemy and pycamp.orm

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

Page 9: SQLAlchemy and pycamp.orm

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' */

Page 10: SQLAlchemy and pycamp.orm

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 ! ^^ */

Page 11: SQLAlchemy and pycamp.orm

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/

Page 12: SQLAlchemy and pycamp.orm

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

Page 13: SQLAlchemy and pycamp.orm

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

Page 14: SQLAlchemy and pycamp.orm

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

Page 15: SQLAlchemy and pycamp.orm

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*/