More information is needed. Test case, psycopg2, SQLA 0.6.6, works fine: from sqlalchemy import * from sqlalchemy.orm import *
metadata= MetaData() orders_table = Table('orders', metadata, Column('id', Integer, primary_key=True, autoincrement=True), Column('created', DateTime, default=func.now()), ) orderitems_table = Table('orderitems', metadata, Column('id', Integer, primary_key=True, autoincrement=True), Column('order_id', Integer, ForeignKey('orders.id'),nullable=False), Column('sum', Float, default=0), Column('created', DateTime, default=func.now()), ) class Order(object): pass class Orderitem(object): pass mapper(Order, orders_table, properties={ 'orderitems': relation(Orderitem, backref='order', primaryjoin=orderitems_table.c.order_id==orders_table.c.id), }) mapper(Orderitem, orderitems_table) e = create_engine('postgresql://scott:tiger@localhost/test', echo=True) metadata.drop_all(e) metadata.create_all(e) session = Session(e) no = Order() noi = Orderitem() no.orderitems.append(noi) session.add(no) session.commit() output of the commit: BEGIN (implicit) INSERT INTO orders (created) VALUES (now()) RETURNING orders.id {} INSERT INTO orderitems (order_id, sum, created) VALUES (%(order_id)s, %(sum)s, now()) RETURNING orderitems.id {'order_id': 1, 'sum': 0} COMMIT On Jan 15, 2011, at 4:02 AM, borisov wrote: > Hello. > > A have this model. > > How to make Order() and Orderitems() objects during one commit() > > I'm trying > > no = Order() > noi = Orderitem() > no.orderitems.append(noi) > Session.add(no) > Session.commit() > > but get an error > > IntegrityError: (IntegrityError) null value in column "order_id" > violates not-null constraint 'INSERT INTO.... > > orders_table = Table('orders', metadata, > Column('id', types.Integer, primary_key=True, autoincrement=True), > Column('created', types.DateTime, default=now()), > ) > > orderitems_table = Table('orderitems', metadata, > Column('id', types.Integer, primary_key=True, autoincrement=True), > Column('order_id', types.Integer, ForeignKey('orders.id'), > nullable=False), > Column('sum', types.Float, default=0), > Column('created', types.DateTime, default=now()), > ) > > class Order(BaseModel): > pass > > class Orderitem(BaseModel): > pass > > > mapper(Order, orders_table, > properties={'orderitems': relation(Orderitem, backref='order', > > primaryjoin=orderitems_table.c.order_id==orders_table.c.id), > }) > mapper(Orderitem, orderitems_table) > > -- > 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. > -- 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.