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

Einfügen mehrerer Zeilen mit psycopg2

Um die Methode execute zu verwenden, platzieren Sie die einzufügenden Daten in einer Liste. Eine Liste wird von psycopg2 an ein Array angepasst. Dann entschachteln Sie das Array und wandeln die Werte nach Bedarf um

import psycopg2

insert = """
    insert into history ("timestamp")
    select value
    from unnest(%s) s(value timestamp)
    returning *
;"""

data = [('2014-04-27 14:07:30.000000',), ('2014-04-27 14:07:35.000000',)]
conn = psycopg2.connect("host=localhost4 port=5432 dbname=cpn")
cursor = conn.cursor()
cursor.execute(insert, (data,))
print cursor.fetchall()
conn.commit()
conn.close()

Ich bin mir nicht sicher, ob der Leistungsunterschied zu executemany signifikant sein wird. Aber ich denke, das oben ist ordentlicher. Der returning -Klausel gibt, wie der Name schon sagt, die eingefügten Tupel zurück.

BTW timestamp ist ein reserviertes Wort und sollte nicht als Spaltenname verwendet werden.