On Aug 12, 2012, at 2:07 PM, Zhe Wu wrote:

> It's weird to me that the following code always gets into a "maximum 
> recursion depth" exception. What I am trying to do here is that the comment 
> model has two foreign keys referring to two other models each of which should 
> be able to back reference comments. There must be something wrong in the 
> model definition. Thanks for pointing it out.
> 
> 
> class Comment(db.Model):
>    __tablename__ = 'comments'
> 
>    id = db.Column(db.Integer, db.Sequence('comment_id_seq'), primary_key=True)
>    time_created = db.Column(db.DateTime, default=db.func.now())
>    body = db.Column(db.UnicodeText, nullable=False)
>    author_id = db.Column(db.Integer, db.ForeignKey('users.id'), index=True)
>    story_id = db.Column(db.Integer, db.ForeignKey('stories.id'), index=True)
> 
>    author = db.relationship("User", backref=db.backref('comments', 
> order_by=time_created))
>    story = db.relationship("Story", backref=db.backref('comments', 
> order_by=time_created))
> 
>    def __init__(self, body, author, story):
>        self.body = body
>        self.author = author
>        self.story = story
> 
> def create_new_comment(author_id, story, body):
>    author = User.query.get(author_id)
>    comment = Comment(author, story, body)
> 
>    try:
>        db.session.add(comment)
>        db.session.commit()
>        return comment
>    except SQLAlchemyError:
>        logger.info("problem when creating comment")
>        db.session.rollback()
>        return None
> 
> story = Story.query.get(1)
> create_new_comment(1, story, 'test comment')

the constructor issue someone mentioned is the source of the issue here.  
However there is also an odd leapfrog between Author and Story occurring (since 
they both have backrefs of the same name "comments") that the ORM ideally would 
be able to detect before running forever, will look into that.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to