this is a reopen of http://www.sqlalchemy.org/trac/ticket/2481, and is fixed
again in r7699a1080742. Thanks for the report.
On May 13, 2013, at 3:18 PM, Gerald Thibault dieselmach...@gmail.com wrote:
I have the following code:
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Session, relationship, backref
e = create_engine('sqlite:tmp/test.db', echo=True)
Base = declarative_base()
Base.metadata = MetaData(e)
class Node(Base):
__tablename__ = 'nodes'
id = Column(Integer, primary_key=True)
class Item(Base):
__tablename__ = 'items'
id = Column(Integer, primary_key=True)
node_id = Column(Integer, ForeignKey(Node.id))
item_type = Column(String(24), default='item')
node = relationship(Node, lazy=True, uselist=False,
backref=backref('objects', lazy=True, uselist=True))
__mapper_args__ = {
'polymorphic_identity': 'item',
'polymorphic_on': 'item_type',
'with_polymorphic': '*',
}
class PolyItem(Item):
__tablename__ = 'poly_items'
id = Column(Integer, ForeignKey(Item.id), primary_key=True)
__mapper_args__ = {
'polymorphic_identity': 'polyitem',
}
item = relationship(Item, lazy=True)
if __name__ == '__main__':
Base.metadata.drop_all()
Base.metadata.create_all()
node = Node()
item = PolyItem(node=node)
session = Session(e)
session.add(node)
session.add(item)
session.commit()
node = session.query(Node).first()
session.delete(node)
session.commit()
This runs fine in 0.7.9 and 0.8.0. However, if I change PolyItem.item to
relationship(Item, lazy=False), 0.7.9 continues to function, while 0.8.0 and
0.8.1 go into infinite loops and eventually fail due to maximum recursion
exceeded. The adding to the db works, it's the delete that is failing.
I've already worked around it on my end (lazy=False seems of little use here,
and was being added programatically, so I adjusted it there and it seems
okay), but I figured I'd point it out as the behavior changed pretty
radically between those 2 versions.
--
You received this message because you are subscribed to the Google Groups
sqlalchemy group.
To unsubscribe from this group and stop receiving emails from it, send an
email to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups
sqlalchemy group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.