sqlalchemy .commit() extremely slow



我的一个表的commit((时间异常缓慢。每次通信超过2分钟((。我不知道为什么,我一直在寻找答案,但总能找到。就在提交之前,我提交了不同的信息,对于相同数量的数据(4k个条目+-(,这需要大约4秒

这是表格:

class BranchPrice(db.Model):
__tablename__ = 'branch_price'
branch_price_id = Column(Integer, primary_key=True, autoincrement=True)
chain_id = Column(db.ForeignKey('chain.id'))
item_code = Column(db.ForeignKey('product.id'))
branch_id = Column(db.ForeignKey('branch.id'))
price = Column(DECIMAL)
update_date = Column(Text)

此外,我在每次提交时添加大约4K个条目。我在一个循环中运行这段代码,后面跟着commit((:

branch_price = BranchPrice(chain_id=self.chain_id, branch_id=branch_id,item_code=item_code, price=price, update_date=update_date)
db.session.add(branch_price)

您应该从单个插入移到大容量插入。SQLAlchemy为不同类型的批量操作提供了基准测试脚本。

在任何情况下,都可以考虑通过BranchPrice.__table__.insert()session.bulk_insert_mappings插入字典列表,而不是BranchPrice对象。

如果您确实想使用BranchPrice对象,可能是因为初始化步骤中的一些逻辑,session.bulk_save_objects是最快的。

最新更新