sql >> Database teknologi >  >> RDS >> PostgreSQL

Indsættelse af flere rækker ved hjælp af psycopg2

For at bruge execute-metoden skal du placere de data, der skal indsættes, på en liste. En liste vil blive tilpasset af psycopg2 til et array. Derefter unnester du arrayet og kaster værdierne efter behov

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

Ikke sikker på, om præstationsforskellen fra executemany vil være signifikant. Men jeg synes ovenstående er pænere. Den returning klausul vil, som navnet antyder, returnere de indsatte tupler.

BTW timestamp er et reserveret ord og bør ikke bruges som et kolonnenavn.




  1. Hvordan DevOps skal bruge DBaaS (Database-as-a-Service) til at optimere deres applikationsudvikling​

  2. Er det muligt at få adgang til en gammel version af en række i Postgres, der ikke er blevet støvsuget?

  3. Før og efter trigger på samme begivenhed? Udfyld et underordnet bord PostgreSQL

  4. VIS TABELLER i MariaDB