SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
PYCAMP.ORM
HACIENDO *FACIL* USAR SQLALCHEMY



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

                         /* momento de suspenso */
pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY



NUESTRO PROPOSITO


                              INTERACTUAMOS CON LA BASE DE DATOS




   BASE DE DATOS RELACIONAL
pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY



INTERACTUAR CON LA DB
pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY



BASES DE DATOS Y SUS DIALECTOS
            言語                   язык          ‫زﺑﺎن‬




        MISMAS QUERYS, DIFERENTES MOTORES / BASES DE DATOS
pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY



ORM / OBJECT RELATION MAPPER

言語




язык                     SQLALCHEMY
                        THE PYTHON SQL
                            TOOLKIT

‫زﺑﺎن‬
pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY



EJEMPLOS / FREDDY VS JASON
                                 言語
       言語
                                  SQLALCHEMY
                                     ORM
pycamp.orm
HACIENDO FACIL USAR SQLALCHEMY



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

   BASE DE DATOS
    RELACIONAL




       TABLAS                      OBJETOS PYTHON
                      SQLALCHEMY       YES!!! ^^


     COLUMNAS



         FILAS
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
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 =)
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 ! ^^ */
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/
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')
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
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
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

Weitere ähnliche Inhalte

Ähnlich wie SQLAlchemy and pycamp.orm

Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
testgrupocomex
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
hdgarcia
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
Javier P.
 

Ähnlich wie SQLAlchemy and pycamp.orm (20)

Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
9.laravel
9.laravel9.laravel
9.laravel
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básico
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
 
Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHP
 
Testing efectivo con pytest
Testing efectivo con pytestTesting efectivo con pytest
Testing efectivo con pytest
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
 
Cómo domar SonataAdminBundle
Cómo domar SonataAdminBundleCómo domar SonataAdminBundle
Cómo domar SonataAdminBundle
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Automatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datosAutomatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datos
 
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 

Kürzlich hochgeladen

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Kürzlich hochgeladen (15)

presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

SQLAlchemy and pycamp.orm

  • 1. PYCAMP.ORM HACIENDO *FACIL* USAR SQLALCHEMY ... y ... de que se trata ? /* momento de suspenso */
  • 2. pycamp.orm HACIENDO FACIL USAR SQLALCHEMY NUESTRO PROPOSITO INTERACTUAMOS CON LA BASE DE DATOS BASE DE DATOS RELACIONAL
  • 3. pycamp.orm HACIENDO FACIL USAR SQLALCHEMY INTERACTUAR CON LA DB
  • 4. pycamp.orm HACIENDO FACIL USAR SQLALCHEMY BASES DE DATOS Y SUS DIALECTOS 言語 язык ‫زﺑﺎن‬ MISMAS QUERYS, DIFERENTES MOTORES / BASES DE DATOS
  • 5. pycamp.orm HACIENDO FACIL USAR SQLALCHEMY ORM / OBJECT RELATION MAPPER 言語 язык SQLALCHEMY THE PYTHON SQL TOOLKIT ‫زﺑﺎن‬
  • 6. pycamp.orm HACIENDO FACIL USAR SQLALCHEMY EJEMPLOS / FREDDY VS JASON 言語 言語 SQLALCHEMY ORM
  • 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