i have a Review object which has associated ReviewQuestionAnswer objects... randomly during updates, it seems that SA wants to issue an insert into the review_question_answers table. nowhere in my code am i creating new answer objects to be inserted.
i'm using an oracle database and turbogears sorry i can't provide a concrete example to recreate it, since it happens sporadically... below is the code that is doing it reviews = Table( "reviews", metadata, Column("id", Integer, Sequence('reviews_seq'), primary_key=True), Column("something", Unicode(255), nullable=False), Column("other", Unicode(255), nullable=False) )# end reviews Table review_question_answers = Table( "review_question_answers", metadata, Column("id", Integer, Sequence('review_question_answers_seq'), primary_key=True), Column("review_id", Integer, ForeignKey("reviews.id"), nullable=False), Column("question_id", Integer, ForeignKey("review_questions.id"), nullable=False), Column("answer", Unicode(255), nullable=True), )# end review_question_answers Table model: ===== class ReviewQuestionAnswer(object): pass ReviewQuestionAnswer.mapper = mapper(ReviewQuestionAnswer, review_question_answers) class Review(object): pass Review.mapper = mapper(Review, reviews, properties=dict( answers=relation(ReviewQuestionAnswer.mapper, lazy=True, private=True) ) ) controller: ========== sess = sa.objectstore tx = sess.create_transaction() # update the review's editable fields review = sess.query(model.Review).get_by(id=id) review.something = kw.get('something', None) review.other = kw.get('other', None) # update the answers for answer in review.answers: answer.answer = kw['answer_%s' % answer.question_id] tx.commit() i'll get output on the console during the attempt like so: [2006-07-24 17:06:06,243] [engine]: UPDATE review_question_answers SET answer=:answer WHERE review_question_answers.id = :review_question_answers_id [2006-07-24 17:06:06,243] [engine]: {'answer': '', 'review_question_answers_id': 250} [2006-07-24 17:06:06,243] [engine]: UPDATE review_question_answers SET answer=:answer WHERE review_question_answers.id = :review_question_answers_id [2006-07-24 17:06:06,243] [engine]: {'answer': '', 'review_question_answers_id': 251} [2006-07-24 17:06:06,253] [engine]: SELECT review_question_answers_seq.nextval FROM DUAL [2006-07-24 17:06:06,253] [engine]: None [2006-07-24 17:06:06,253] [engine]: INSERT INTO review_question_answers (id, review_id, question_id, answer) VALUES (:id, :review_id, :question_id, :answer) [2006-07-24 17:06:06,253] [engine]: {'answer': None, 'id': 299, 'review_id': None, 'question_id': None} [2006-07-24 17:06:06,253] [engine]: ROLLBACK **** review.update, exception: (DatabaseError) ORA-01400: cannot insert NULL into ("QACLAIMS"."REVIEW_QUESTION_ANSWERS"."REVIEW_ID") 'INSERT INTO review_question_answers (id, review_id, question_id, answer) VALUES (:id, :review_id, :question_id, :answer)' {'answer': None, 'id': 299, 'review_id': None, 'question_id': None} has anyone experienced something like this? ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Sqlalchemy-users mailing list Sqlalchemy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users