我将 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)
是否有一些简单的方法可以实现这种行为?
最佳答案
您可以只使用默认 session 模式;添加对象,然后刷新以将对象保存到数据库中。不要提交事务,让 Zope 处理:
mi = MyItem()
DBSession.add(mi)
DBSession.flush()
print mi.id
您的对象将被添加到当前事务中的数据库中,因此主键将是已知的。
关于python - SqlAlchemy,生成的对象 Id 和 Zope 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736681/