Hi!
When trying to remove element from association_proxy exception occure.
Here is code example:
################## CODE EXAMPLE #########################
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base,
DeclarativeMeta
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import scoped_session, sessionmaker, relation,
backref
engine = create_engine('sqlite://')
meta = MetaData()
meta.bind = engine
class Base(declarative_base(metadata=meta)):
_decl_class_registry = {}
def __init__(self, *args, **kwargs):
for key, val in kwargs.iteritems():
self.__setattr__(key, val)
class Client(Base):
__tablename__ = 'client'
id = Column('id', Integer, primary_key=True)
name = Column('name', String(50))
groups = association_proxy('client_group', 'group', creator=lambda
x: ClientGroup(client=x))
class Group(Base):
__tablename__ = 'group'
id = Column('id', Integer, primary_key=True)
name = Column('name', String(50))
clients = association_proxy('client_group', 'client',
creator=lambda x: GroupClient(client=x))
class GroupClient(Base):
__tablename__ = 'clientgroup'
client_id = Column('client_id', Integer, ForeignKey('client.id'),
primary_key = True)
group_id = Column('group_id', Integer, ForeignKey('group.id'),
primary_key = True)
client = relation(Client, backref = backref('client_group'))
group = relation(Group, backref = backref('client_group'))
meta.create_all()
session = scoped_session(sessionmaker(bind=engine))
clnt = Client(name='test')
session.add(clnt)
grp = Group(name='tg')
session.add(grp)
grp.clients.append(clnt)
#session.flush()
#grp.clients.remove(clnt)
clnt.groups.remove(grp)
session.flush()
#########################################################
--
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.