sql >> Databasteknik >  >> RDS >> PostgreSQL

Infoga flera rader med psycopg2

För att använda exekveringsmetoden placera data som ska infogas i en lista. En lista kommer att anpassas av psycopg2 till en array. Sedan avinstallerar du arrayen och castar värdena 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()

Inte säker på om prestandaskillnaden från exekvering kommer att vara betydande. Men jag tycker att ovanstående är snyggare. Den returning sats kommer, som namnet antyder, att returnera de infogade tuplarna.

BTW timestamp är ett reserverat ord och bör inte användas som kolumnnamn.




  1. Hur kan jag sammanfoga två tabeller med olika antal rader i MySQL?

  2. Är det möjligt att skapa en tabell med ett variabelnamn i PostgreSQL?

  3. SQL Server ROWLOCK över en SELECT om den inte existerar INSERT transaktion

  4. Hur man returnerar 0 istället för null när man använder COUNT i MySQL