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.