SQLAlchemy - 在多个线程中操作和提交相关对象

时间:2018-04-19 18:15:07

标签: python multithreading orm sqlalchemy

考虑一个简单的数据库,其中表a与表bc具有一对多的关系,在SQLAlchemy中表示。

在我的应用程序中,在代码执行开始时,我创建了与表A对应的a对象,然后我想填充表b和{ {1}}通过在并行线程中创建和提交cB个对象。然而,这是有问题的:

  • 我不应该跨多个线程使用相同的会话,因为会话不是线程安全的;即使我尝试过,也会引发以下异常:C
  • 当我使用SQLite objects created in a thread can only be used in that same thread为每个帖子创建一个新会话时,因为scoped_sessionA / B个对象之间的关系导致{{ 1}} / C已分配到B的会话,我收到以下异常: C

那么所需的解决方案是什么?让我们假设我不能简单地等到两个工作完成后再提交A对象sqlalchemy.exc.InvalidRequestError: Object '<B at 0x1e68229b780>' is already attached to session '1' (this is '2')A

B

0 个答案:

没有答案