PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

psycopg2:füge mehrere Zeilen mit einer Abfrage ein

Ich habe ein Programm erstellt, das mehrere Zeilen zu einem Server einfügt, der sich in einer anderen Stadt befindet.

Ich fand heraus, dass die Verwendung dieser Methode etwa 10-mal schneller war als executemany . In meinem Fall tup ist ein Tupel mit etwa 2000 Zeilen. Bei dieser Methode dauerte es etwa 10 Sekunden:

args_str = ','.join(cur.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in tup)
cur.execute("INSERT INTO table VALUES " + args_str) 

und 2 Minuten bei dieser Methode:

cur.executemany("INSERT INTO table VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)", tup)