Skip to Content
Menu
This question has been flagged
2 Replies
4103 Views

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 !!




        

Avatar
Discard
Best Answer

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,
)
Avatar
Discard
Related Posts Replies Views Activity
1
May 18
3101
0
Feb 18
2290
2
May 23
971
2
Dec 18
7641
0
May 16
2623