Pycones 2015 Introducción a ORM • Object Relational Mapping • Mapear objetos en tablas • Crea una BD orientada a objetos virtual • Es necesario saber cómo funcionan las base de datos a nivel relacional
Pycones 2015 Ventajas • Evitar escribir código SQL • Independizar la fuente de datos • Mismo código puedo cambiar base de datos • Fácil modelado de datos
Pycones 2015 PonyORM • Funciona de forma similar a SQLalchemy,mejorando algunas cosas • Puede trabajar a la vez con varias BD • Relaciones bidireccionales https://ponyorm.com
Pycones 2015 PonyORM db_session • Realiza un commit si detecta cualquier cambio y no se ha producido ninguna excepción • Realiza un rollback de la transacción si se produce una excepción • Gestiona el pool de conexiones con la BD • Gestiona caché de sesión de forma automática
Pycones 2015 PonyORM ventajas • Optimización automática de consultas(Automatic query optimization) • Gestión automática de transacciones • Almacenamiento en caché automático de consultas y objetos • Soporte completo de claves primarias compuestas • La capacidad de escribir con facilidad consultas utilizando LEFT JOIN, VISTA y otras características de SQL
Pycones 2015 Transacciones try: with db.atomic() as nested_txn: object = Entity.create() return 'Success' except peewee.IntegrityError: # This will roll back the above create() query. nested_txn.rollback() return 'Failure'
Pycones 2015 Transacciones @db.atomic() def create_entity(): # This statement will run in a transaction. If the caller is already # running in an `atomic` block, then a savepoint will be used instead. return Entity.create()
Pycones 2015 Performance # Faster with db.atomic(): for data_dict in data_source: Model.create(**data_dict) # Fastest with db.atomic(): Model.insert_many(data_source).execute()
Pycones 2015 Comparativa SQLAlchemy SQLObject PonyORM Peewee Django ORM Soporte sesión en Base de datos Automatic Schema Migrations Many-to-many relations intuitive Automatic query optimization Unit of Work