PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

psycopg2 :insérer plusieurs lignes avec une seule requête

J'ai construit un programme qui insère plusieurs lignes sur un serveur situé dans une autre ville.

J'ai découvert que l'utilisation de cette méthode était environ 10 fois plus rapide que executemany . Dans mon cas tup est un tuple contenant environ 2000 lignes. Cela a pris environ 10 secondes lors de l'utilisation de cette méthode :

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) 

et 2 minutes en utilisant cette méthode :

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