Probeer dit:
id2 = csv.reader(open(os.path.join(perf_dir,id_files[1])))
h = tuple(next(id2))
create = '''CREATE TABLE id2 (%s varchar, %s int PRIMARY KEY, %s int)''' % h
insert = '''INSERT INTO id2 (%s, %s, %s) VALUES (%%s, %%s, %%s)''' % h
...
cr.executemany(insert, id2)
Geef de opdracht sql slechts één keer door voor alle rijen. Naast de prestatieoverhead van het uitgeven van extra sql-opdrachten, moet u er rekening mee houden dat de grootte van de sql-string zelf (in bytes) waarschijnlijk kleiner is dan de werkelijke gegevens die worden getest.
Het gebruik van id2 als generator zonder de array moet ook voorkomen dat de volledige dataset in het geheugen wordt geladen.