gpt4 book ai didi

python - 我在滥用 flush() 调用吗?

转载 作者:搜寻专家 更新时间:2023-10-30 22:02:04 26 4
gpt4 key购买 nike

我有一个网络应用程序,用户可以在其中创建和编辑文章。每个文章编辑都会创建一个新的修订版。我正在使用 SQLAlchemy 作为 ORM。

现在,每次我创建一篇文章时,都会发生这种情况:

  # Create the article
article = Article(...)
session.add(article)
session.flush()

# Create the revision
revision = Revision(article.id, ...)
session.add(revision)
session.flush()

# Set article's `current_revision_id` field to the revision's id
article.current_revision_id = revision.id

session.commit()

我必须每次调用 flush() 的原因是我可以获得文章和修订的 ID。 Article 和 Revision 都不能提交到数据库,直到它们引用了彼此的 ID。

我的问题是这样做是否明智。如果很多人同时创建一篇文章,flush() 调用分配的 ID 是否可能变得不同步?这可以作为“交易”接受吗?

最佳答案

不要在代码中使用 ID,而是使用 relationship system SQLAlchemy 的。

article = Article(...)
revision = Revision(article, ...)
article.current_revision = revision
session.add(article)
session.commit()

关于python - 我在滥用 flush() 调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10473483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com