[Subversion] / Trellis / SQLAlchemy.txt  

View of /Trellis/SQLAlchemy.txt

Parent Directory | Revision Log
Revision: 2528 - (download)
Fri Apr 25 22:07:07 2008 UTC (16 years ago) by pje
File size: 2380 byte(s)
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