SqlAlchemy,生成对象Id和Zope事务

时间:2012-05-24 11:33:42

标签: python sqlalchemy zope

我正在使用SQLAlchemy和Zope事务。我的目标是:

class MyItem(DeclarativeBase):

    #  ....
    id = Column(Integer, primary_key=True)
    # ....

然后当我创建一个新对象并提交事务时,我想获得genarated id,例如:

mi = MyItem()
DBSession.add(mi)
transaction.commit()
print mi.id # currently object is expired (not persistent with this session)

有没有简单的方法来实现这种行为?

1 个答案:

答案 0 :(得分:3)

您可以使用默认会话模式;添加对象,然后刷新以将对象保存到数据库。 提交事务,让Zope处理:

mi = MyItem()
DBSession.add(mi)
DBSession.flush()
print mi.id

您的对象将被添加到当前事务中的数据库中,因此主键将是已知的。