sql >> Base de Datos >  >> RDS >> PostgreSQL

Insertar múltiples filas usando psycopg2

Para usar el método de ejecución, coloque los datos que se insertarán en una lista. psycopg2 adaptará una lista a una matriz. Luego, desanimes la matriz y emitas los valores según sea necesario

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

No estoy seguro de si la diferencia de rendimiento con respecto a executemany será significativa. Pero creo que lo anterior es más ordenado. El returning la cláusula devolverá, como sugiere el nombre, las tuplas insertadas.

Por cierto timestamp es una palabra reservada y no debe usarse como nombre de columna.