The bottleneck is probably the barcode and qrcode generation. What information do you store in it, especially the qrcode, because that can contain *a lot* of info. There is not necessarily anything wrong with your code that I can see except for those two. If you replace these two with dummies it is mere seconds, not minutes. Even milliseconds:600 is not a big number.
Then again: the whole loop is full of things that are possibly computationally expensive by nature.
I would focus on the bar/qrcode generation. And yes, those two can probably be parallelized.
To reassure you: it is not sqlite, which can store 1000ths of records in a second, not a minute, and even on old hardware.