我正在使用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)
有没有简单的方法来实现这种行为?
答案 0 :(得分:3)
您可以使用默认会话模式;添加对象,然后刷新以将对象保存到数据库。 不提交事务,让Zope处理:
mi = MyItem()
DBSession.add(mi)
DBSession.flush()
print mi.id
您的对象将被添加到当前事务中的数据库中,因此主键将是已知的。