### TEST 1 STATEMENTS 2011-11-09 13:30:24 EET LOG: statement: BEGIN 2011-11-09 13:30:24 EET LOG: statement: SELECT report.id AS report_id, report.content AS report_content, report.comments_count AS report_comments_count, report.user_id AS report_user_id FROM report WHERE report.id = 1 2011-11-09 13:30:24 EET LOG: statement: SELECT users.id AS users_id, users.username AS users_username FROM users WHERE users.username = 'sector119' 2011-11-09 13:30:24 EET LOG: statement: SELECT comment.id AS comment_id, comment.content AS comment_content, comment.report_id AS comment_report_id, comment.user_id AS comment_user_id FROM comment WHERE 1 = comment.report_id ORDER BY comment.id 2011-11-09 13:30:24 EET LOG: statement: INSERT INTO comment (content, report_id, user_id) VALUES ('test comment', 1, 1) RETURNING comment.id 2011-11-09 13:30:24 EET LOG: statement: COMMIT
### TEST 2 STATEMENTS 2011-11-09 13:30:24 EET LOG: statement: BEGIN 2011-11-09 13:30:24 EET LOG: statement: SELECT report.id AS report_id, report.content AS report_content, report.comments_count AS report_comments_count, report.user_id AS report_user_id FROM report WHERE report.id = 1 2011-11-09 13:30:24 EET LOG: statement: SELECT users.id AS users_id, users.username AS users_username FROM users WHERE users.username = 'sector119' 2011-11-09 13:30:24 EET LOG: statement: INSERT INTO comment (content, report_id, user_id) VALUES ('test comment', NULL, 1) RETURNING comment.id 2011-11-09 13:30:24 EET ERROR: null value in column "report_id" violates not-null constraint 2011-11-09 13:30:24 EET STATEMENT: INSERT INTO comment (content, report_id, user_id) VALUES ('test comment', NULL, 1) RETURNING comment.id 2011-11-09 13:30:24 EET LOG: statement: ROLLBACK ### TEST CASE from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, ForeignKey from sqlalchemy import Integer, String, UnicodeText from sqlalchemy import event from sqlalchemy.orm import relationship engine = create_engine('postgresql+psycopg2://USER:PASSWORD@127.0.0.1:5432/test', echo=True) Session = sessionmaker() Base = declarative_base() Session.configure(bind=engine) Base.metadata.bind = engine class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) username = Column(String(255), unique=True, nullable=False) class Comment(Base): __tablename__ = 'comment' id = Column(Integer, primary_key=True) content = Column(UnicodeText, nullable=False) report_id = Column(Integer, ForeignKey('report.id'), nullable=False) user_id = Column(Integer, ForeignKey('users.id'), nullable=False) user = relationship('User', backref='comments') class Report(Base): __tablename__ = 'report' id = Column(Integer, primary_key=True) content = Column(UnicodeText, nullable=False) comments_count = Column(Integer, server_default='0', nullable=False) user_id = Column(Integer, ForeignKey('users.id'), nullable=False) user = relationship('User', backref='reports') comments = relationship('Comment', backref='report', cascade='all, delete-orphan', order_by='Comment.id') Base.metadata.create_all(engine) session = Session() user = User(username='sector119') session.add(user) session.flush() session.commit() session.close() session = Session() user = session.query(User).filter_by(username='sector119').one() report = Report(content=u'test report', user=user) session.add(report) session.flush() session.commit() session.close() session = Session() ### TEST 1 report = session.query(Report).get(1) user = session.query(User).filter_by(username='sector119').one() comment = Comment(content=u'test comment', user_id=user.id) report.comments.append(comment) session.add(report) session.flush() session.commit() session.close() ### TEST 2 # HERE I GOT ERROR if I uncomment "user = ..." line session = Session() report = session.query(Report).get(1) #user = session.query(User).filter_by(username='sector119').one() comment = Comment(content=u'test comment', user=user) report.comments.append(comment) session.add(report) session.flush() session.commit() session.close() 2011-11-09 13:22:10,270 INFO sqlalchemy.engine.base.Engine INSERT INTO comment (content, report_id, user_id) VALUES (%(content)s, %(report_id)s, %(user_id)s) RETURNING comment.id 2011-11-09 13:22:10,270 INFO sqlalchemy.engine.base.Engine {'content': u'test comment', 'user_id': 1, 'report_id': None} 2011-11-09 13:22:10,270 INFO sqlalchemy.engine.base.Engine ROLLBACK Traceback (most recent call last): File "test_append.py", line 92, in <module> report.comments.append(comment) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/attributes.py", line 168, in __get__ return self.impl.get(instance_state(instance),dict_) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/attributes.py", line 453, in get value = self.callable_(state, passive) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/strategies.py", line 563, in _load_for_state result = q.all() File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/query.py", line 1922, in all return list(self) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/query.py", line 2031, in __iter__ self.session._autoflush() File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/session.py", line 973, in _autoflush self.flush() File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/session.py", line 1547, in flush self._flush(objects) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/session.py", line 1616, in _flush flush_context.execute() File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/unitofwork.py", line 328, in execute rec.execute(self) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/unitofwork.py", line 472, in execute uow File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/orm/mapper.py", line 2221, in _save_obj execute(statement, params) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/engine/base.py", line 1399, in execute params) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/engine/base.py", line 1532, in _execute_clauseelement compiled_sql, distilled_params File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/engine/base.py", line 1640, in _execute_context context) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/engine/base.py", line 1633, in _execute_context context) File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/engine/default.py", line 330, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (IntegrityError) null value in column "report_id" violates not-null constraint 'INSERT INTO comment (content, report_id, user_id) VALUES (%(content)s, %(report_id)s, %(user_id)s) RETURNING comment.id' {'content': u'test comment', 'user_id': 1, 'report_id': None} -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/9eqftGEmX-wJ. 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.