我的一个表的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
是最快的。