PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inserindo várias linhas usando psycopg2


Para usar o método execute coloque os dados a serem inseridos em uma lista. Uma lista será adaptada pelo psycopg2 para um array. Então você desaninha a matriz e lança os valores conforme necessário
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()

Não tenho certeza se a diferença de desempenho de executemany será significativa. Mas eu acho que o acima é mais puro. O returning cláusula irá, como o nome sugere, retornar as tuplas inseridas.

BTW timestamp é uma palavra reservada e não deve ser usada como nome de coluna.