2

我将 SQLAlchemy 与 Zope 事务一起使用。我的对象是这样的:

class MyItem(DeclarativeBase):

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

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

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

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

4

1 回答 1

3

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

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

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

于 2012-05-24T12:40:55.467 回答