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

Insertion de plusieurs lignes à l'aide de psycopg2

Pour utiliser la méthode execute, placez les données à insérer dans une liste. Une liste sera adaptée par psycopg2 à un tableau. Ensuite, vous désimbriquez le tableau et castez les valeurs si nécessaire

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()

Je ne sais pas si la différence de performances par rapport à executemany sera significative. Mais je pense que ce qui précède est plus propre. Le returning clause renverra, comme son nom l'indique, les tuples insérés.

BTW timestamp est un mot réservé et ne doit pas être utilisé comme nom de colonne.