如何在python中创建一个具有230.000+条记录的循环,但又不能使其缓慢地断开,该数据在Odoo 11中?

问题描述 投票:0回答:1

我有一个问题,每个完成的数量,我需要创建1条记录。现在,我有230.000+个完成数量,因此必须创建230.000条记录。如果我像往常一样进行for循环

for line in range(1, int(move_line.qty_done) + 1 ): #qty_done here is 230.000
    val = {
        'name': line.name,....some data here}
    self.env['model'].create(val)

因此,当我运行此服务器时,我的服务器本地服务器将在20分钟内卡住并死亡。恐怕如果将代码推送到真正的服务器上,那将是可怕的。为此,请给我一些建议,谢谢。

python-3.6 odoo-11
1个回答
0
投票

这里您正尝试使用单独的创建查询来创建2,30,000记录。

最好使用准备数据列表,然后调用一次create方法。

请参考下面的示例,并在您的代码中实现。

注。仅当您的模型中存在One2many字段时,此示例才有效。

create_list = []
for line in range(1, int(move_line.qty_done) + 1 ): #qty_done here is 230.000
    val = {
        'name': line.name,....some data here
    }
    create_list.append(val)
self.create_data.create(create_list)

这里create_dataOne2many字段。

© www.soinside.com 2019 - 2024. All rights reserved.