python - SqlAlchemy,生成的对象 Id 和 Zope 事务

标签 python sqlalchemy zope

我将 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/

相关文章:

python - 在 Plone 4 的文件夹中限制每个成员一个内容项

python - 如何将默认值设置为 zope.schema.datetime?

django - 将(非常旧的)Zope/Plone 站点移至 Django

python - 根据以下条件,我如何用零和一填充我的第二个列表?

python - 我需要在哪里放置我的 Django 测试以便它们被执行?

python - 组合关系

python - 我将如何查询使用 sqlalchemy 从邻接列表中检索所有对象?

python - 进行此搜索的最有效方法是什么(mysql 或文本)?

python - 如何在 boto3 中创建源为 sg 的入口规则

python - 添加 prefix_with 子句以插入特定类