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
-~----------~----~----~----~------~----~------~--~---

Reply via email to