Per impostazione predefinita, psycopg2 avvia automaticamente le transazioni, il che significa che devi dirgli di eseguire il commit. Nota che commit
è un metodo di connection
, non il cursor
.
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
L'intento è che puoi raggruppare più istruzioni in un'unica transazione, in modo che le altre query non vedranno le modifiche apportate a metà, ma anche per motivi di prestazioni.
Tieni inoltre presente che dovresti sempre usare i segnaposto, invece di concatenare le stringhe insieme.
Es.:
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
Altrimenti rischi di rendere possibili attacchi SQL injection.