Som standard startar psycopg2 transaktioner åt dig automatiskt, vilket innebär att du måste säga åt den att begå. Observera att commit
är en metod för connection
, inte cursor
.
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
Avsikten är att du kan gruppera flera uttalanden i en enda transaktion, så att andra frågor inte kommer att se halvgjorda ändringar, men också av prestandaskäl.
Observera också att du alltid bör använda platshållare, istället för att sammanfoga strängar.
T.ex.:
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
Annars riskerar du att göra SQL-injektionsattacker möjliga.