跳至内容
菜单
此问题已终结
2 回复
5417 查看

Is there any alternative way to create/write data at once  ?

Now i'm using
for rec in bla :
    vals = {}
    vals['name'] = rec.name

    obj.create(vals)

When i'm trying to create 1000++ data i will be very slow, take 1-3 Hours.
I need alternative way ! Thank You !!




        

形象
丢弃
最佳答案

Hi @Chaanto

There are several ways that you could use to get that task done. Here I give you 2. Hope it will help you

1- Using Model load method that accept 2 arguments, fields and data. were fields is a list of fields that match the elements in the data rows meaning that the argument with the data need to be a list of rows and every row will be the list of values of the fields in the same order

Model = self.env['model.name']
result = Model.load(
['name', 'value'],
[
['A', '1'],
['B', '2'],
['C', '3']
],
)
2- Using Cursor copy_from by building a CSV with the data to be load using an SQL Copy Commands
fields = ['name', 'value']
self.env.cr.copy_from(io.StringIO(
u'\n'.join(
u"%s\t%s\t%s\t%d" % (
rec.name,
rec
.value
)
for rec in bla
)),
table='model_table',
columns=fields,
)
形象
丢弃
相关帖文 回复 查看 活动
1
5月 18
4124
0
2月 18
3351
2
5月 23
2101
2
12月 18
9647
0
5月 16
3628