De forma predeterminada, psycopg2 inicia las transacciones automáticamente, lo que significa que debe indicarle que se comprometa. Tenga en cuenta que commit
es un método de la connection
, no el cursor
.
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
La intención es que pueda agrupar varias declaraciones en una sola transacción, por lo que otras consultas no verán cambios a medio hacer, sino también por razones de rendimiento.
También tenga en cuenta que siempre debe usar marcadores de posición, en lugar de concatenar cadenas.
Por ejemplo:
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
De lo contrario, corre el riesgo de hacer posibles los ataques de inyección SQL.