Doc overhaul, and rename ObserverCell->Performer
================================= Using the Trellis with SQLAlchemy ================================= >>> from peak.events import trellis, collections >>> from sqlalchemy import create_engine >>> engine = create_engine('sqlite:///:memory:') >>> from sqlalchemy import Table, Column, Integer, String >>> from sqlalchemy import MetaData, ForeignKey >>> metadata = MetaData() >>> users_table = Table('users', metadata, ... Column('id', Integer, primary_key=True), ... Column('name', String(40)), ... Column('fullname', String(100)), ... Column('password', String(15)) ... ) >>> metadata.create_all(engine) >>> class User(trellis.Component): ... password = trellis.attr(None) ... def __init__(self, name, fullname, password): ... self.name = name ... self.fullname = fullname ... self.password = password ... ... def __repr__(self): ... return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password) >>> from sqlalchemy.orm import mapper >>> mapper(User, users_table) <sqlalchemy.orm.mapper.Mapper object at 0x...> >>> ed_user = User('ed', 'Ed Jones', 'edspassword') >>> ed_user.name 'ed' >>> ed_user.password 'edspassword' >>> print ed_user.id None >>> def spy(): ... print "Ed's password is", ed_user.password >>> spy = trellis.Performer(spy) Ed's password is edspassword >>> from sqlalchemy.orm import sessionmaker >>> Session = sessionmaker(bind=engine, autoflush=True, transactional=True) >>> session = Session() >>> session.save(ed_user) >>> session.query(User).filter_by(name='ed').first() <User('ed','Ed Jones', 'edspassword')> >>> session.save(User('wendy', 'Wendy Williams', 'foobar')) >>> session.save(User('mary', 'Mary Contrary', 'xxg527')) >>> session.save(User('fred', 'Fred Flinstone', 'blah')) >>> ed_user.password = 'f8s7ccs' Ed's password is f8s7ccs >>> session.commit() >>> ed_user.id 1 >>> ed_user is session.query(User).filter_by(name='ed').one() True >>> ed_user is session.query(User).get(ed_user.id) True >>> from sqlalchemy.orm.attributes import manager_of_class >>> manager_of_class(User) <SAInstrument of <class 'User'> at ...>
cvs-admin@eby-sarna.com Powered by ViewCVS 1.0-dev |
ViewCVS and CVS Help |