sql >> Database >  >> RDS >> PostgreSQL

Meerdere rijen invoegen met psycopg2

Om de execute methode te gebruiken, plaatst u de in te voegen gegevens in een lijst. Een lijst wordt door psycopg2 aangepast aan een array. Vervolgens verwijder je de array en cast je de waarden indien nodig

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

Ik weet niet zeker of het prestatieverschil met executemany aanzienlijk zal zijn. Maar bovenstaande vind ik netter. De returning clausule zal, zoals de naam al doet vermoeden, de ingevoegde tuples retourneren.

BTW timestamp is een gereserveerd woord en mag niet als kolomnaam worden gebruikt.




  1. LINQ naar SQL elke N-de rij van tabel

  2. pgAdmin - Definities van DB-verbindingen delen

  3. Waarom krijg ik een foutmelding als ik een tabel probeer te hernoemen na FROM?

  4. Hoe twee DATE-waarden te vergelijken die alleen zijn gebaseerd op het datumgedeelte in Oracle?