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
7. pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY
ENTONCES ? ... /* BASTA DE DIBUJITOS */
BASE DE DATOS
RELACIONAL
TABLAS OBJETOS PYTHON
SQLALCHEMY YES!!! ^^
COLUMNAS
FILAS
8. pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY
HACIENDO ALQUIMIA, INGREDENTES:
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import mapper
from sqlalchemy import MetaData
from sqlalchemy import create_engine
ENGINE + METADATA
MAPPER
SESIONES
== PODEROSA ALQUIMIA
9. pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY
ORDEN DE LOS INGREDIENTES
/* LA CHARLA NO ERA DE PYCAMP.ORM ?! o.O' */
1- CREAR ENGINE
2- BINDEAR CONTRA NUESTRO ENGINE
...
LISTO =)
10. pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY
PREPARANDO EL ENGINE Y BINDEANDO
/* LA CHARLA NO ERA DE PYCAMP.ORM ?! o.O' */
from sqlalchemy import create_engine
url = 'mysql://user:passwd@host/dbname'
engine = create_engine(url)
/* mission 1 complete! */
from sqlalchemy.orm import sessionmaker
sesion = sessionmaker(bind=engine)
from sqlalchemy import MetaData
meta = MetaData(bind=engine)
/* Very nice ! ^^ */
11. pycamp.orm
HACIENDO 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/
12. pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY
ONE RING TWO OBJECTS TO RULE THEM ALL!!!
from pycamp.orm.mapper import Database
mydb = Database('pycamp', user='pycamp', passwd='pycamp', engine='mysql')
otherdb = Database('pyday', user='pyday', passwd='pyday', engine='posgresql')
from pycamp.orm.mapper import DatabaseManager
manager = DatabaseManager()
manager.add(mydb, otherdb)
import datetime engine
manager.mysql.pycamp.
newreg = manager.mysql.pycamp.test1() manager.mysql.pycamp.host
newreg.name = 'foo bar' meta
manager.mysql.pycamp.
newreg.birthdate = datetime.date.today() manager.mysql.pycamp.name
newreg.contact_id = '31337' manager.mysql.pycamp.passwd
session
manager.mysql.pycamp.
sesion = manager.mysql.pycamp.session() test1
manager.mysql.pycamp.
sesion.add(newreg) manager.mysql.pycamp.user
try:
sesion.commit()
except Exception,ex:
os.system('halt')
13. pycamp.orm
HACIENDO 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
14. pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY
MEZCLANDO TODO ...
HORA DE IR AL SHELL ...
AHORA GENERALMENTE SE ROMPE TODO
Y/O/U NO ANDA NADA COMO UNO LO ESPERA
15. pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY
MUCHAS GRACIAS!!! /* DONACIONES DE CERVEZAS SERAN BIEN RECIBIDAS ^^ */ */
PYCAMP.ORM
https://bitbucket.org/edvm/pycamp.orm/overview
SQLALCHEMY
http://www.sqlalchemy.org/docs/
Que tengan un buen dia y recuerden ... traten
de usar una base de datos orientada a
Objetos u/o/y NoSQL ^^ /* cheatsheet
- Zope
- MongoDB
*/
Emiliano Dalla Verde Marcozzi
edvm@airtrack.com.ar
twitter: @edvm
irc freenode: x-ip