Created
August 7, 2013 04:26
-
-
Save cxrlospxndo/6171173 to your computer and use it in GitHub Desktop.
sqlalchemy-orm ejemplo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from sqlalchemy import * | |
from sqlalchemy.ext.declarative import declarative_base | |
from sqlalchemy.orm import sessionmaker | |
# configuracion | |
# http://docs.sqlalchemy.org/en/rel_0_8/orm/tutorial.html#connecting | |
eng = create_engine('postgresql://127.0.0.1:5432/erpgenerator?user=erpgenerator&password=erpgenerator') | |
Session = sessionmaker(bind=eng) | |
# creando una session | |
# http://docs.sqlalchemy.org/en/rel_0_8/orm/tutorial.html#creating-a-session | |
session = Session() | |
# mapeando la tabla 'perctrl' a la clase Perctrl | |
# http://docs.sqlalchemy.org/en/rel_0_8/orm/tutorial.html#declare-a-mapping | |
Base = declarative_base() | |
class Perctrl(Base): | |
__tablename__ = 'perctrl' | |
perctrl_id = Column(Integer, primary_key=True) | |
cp_empresa = Column(String) | |
cp_ejercicio = Column(String) | |
cp_item_numerator = Column(String) | |
cp_periodo = Column(String) | |
cp_libro = Column(String) | |
cp_flag_abierto_cerrado = Column(String) | |
def __init__(self, empresa, ejercicio, periodo, libro, item_numerator, flag_abierto_cerrado): | |
self.cp_empresa = empresa | |
self.cp_ejercicio = ejercicio | |
self.cp_periodo = periodo | |
self.cp_libro = libro | |
self.cp_item_numerator = item_numerator | |
self.cp_flag_abierto_cerrado = flag_abierto_cerrado | |
def __repr__(self): | |
return "<Soy una instancia de Perctrl('%s','%s', '%s', '%s'. '%s')>" % (self.cp_empresa, self.cp_ejercicio, self.cp_periodo, self.cp_libro, self.cp_flag_abierto_cerrado) | |
# Ejemplos | |
# 1 | |
# crear una instancia de Perctrl | |
pc = Perctrl('bb', '2008', '07', 'A01', '1', 'A') | |
print pc.cp_empresa, pc.cp_ejercicio, pc.cp_periodo, pc.cp_libro, pc.cp_item_numerator, pc.cp_flag_abierto_cerrado | |
print pc | |
# agregamos el objeto, pero aun no impacta la db | |
session.add(pc) | |
# 2 | |
# tomando de referencia el triggerx132001t, abrimos los libros para las condiciones dadas | |
empresa, ejercicio, periodo, flag = 'vv', '2009', '05', 'C' | |
session.query(Perctrl).filter_by(cp_empresa=empresa, cp_ejercicio=ejercicio, cp_periodo=periodo).\ | |
update({'cp_flag_abierto_cerrado': flag}) | |
# para que los cambios impacten la db | |
session.commit() | |
# mas informacion sobre Session | |
# https://sqlalchemy.readthedocs.org/en/rel_0_6/orm/session.html | |
session.close() | |
# revisar el trigger x132001t, que fue implementado usando sqlalchemy-orm |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment