Par défaut, psycopg2 démarre automatiquement les transactions pour vous, ce qui signifie que vous devez lui dire de valider. Notez que commit
est une méthode de la connection
, pas le cursor
.
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
L'intention est que vous puissiez regrouper plusieurs déclarations dans une seule transaction, afin que les autres requêtes ne voient pas les modifications à moitié effectuées, mais aussi pour des raisons de performances.
Notez également que vous devez toujours utiliser des espaces réservés, au lieu de concaténer des chaînes ensemble.
Par exemple :
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
Sinon, vous risquez de rendre possibles les attaques par injection SQL.