try:
def _create_uk_by_keyword(keyword):
"""A creator function.
We expect keywords to already be in the DB.. therefore, just
search and return the existing keyword"""
return
UserKeyword
(keyword=session.query(Keyword).filter_by(keyword=keyword).one())
On Apr 25, 2009, at 7:05 PM, GHZ wrote:
> from sqlalchemy import Table, Column, Integer, String, MetaData,
> ForeignKey, Sequence, create_engine
> from sqlalchemy.orm import relation, sessionmaker
> from sqlalchemy.ext.declarative import declarative_base
> from sqlalchemy.ext.associationproxy import association_proxy
>
> engine = create_engine('sqlite:///:memory:', echo=True)
>
> Session = sessionmaker(autoflush=False, bind=engine)
> session = Session()
>
> Base = declarative_base()
>
> def _create_uk_by_keyword(keyword):
> """A creator function.
> We expect keywords to already be in the DB.. therefore, just
> search and return the existing keyword"""
> return session.query(Keyword).filter_by(keyword=keyword).one()
>
> class User(Base):
>
> __tablename__ = 'users'
>
> id = Column(Integer, primary_key=True)
> name = Column(String)
>
> keywords = association_proxy('user_keywords', 'keyword',
> creator=_create_uk_by_keyword)
>
> class Keyword(Base):
>
> __tablename__ = 'keywords'
>
> id = Column(Integer, primary_key=True)
> keyword = Column(String)
>
> class UserKeyword(Base):
>
> __tablename__ = 'userkeywords'
>
> id = Column(Integer, primary_key=True)
>
> user_id = Column(Integer, ForeignKey("users.id"))
> keyword_id = Column(Integer, ForeignKey("keywords.id"))
>
> user = relation(User, backref='user_keywords')
> keyword = relation(Keyword)
>
>
> Base.metadata.create_all(engine)
>
> kw = Keyword(keyword='kw 1')
> session.add(kw)
> session.flush()
>
> user = User(name='bob')
> user.keywords=['kw 1']
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---