PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

cursor.execute(INSERT INTO im_entry.test (+entrym+) VALUES ('+p+');)

Standardmäßig startet psycopg2 automatisch Transaktionen für Sie, was bedeutet, dass Sie ihm sagen müssen, dass es sich verpflichten soll. Beachten Sie, dass commit ist eine Methode der connection , nicht der cursor .

conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()

Die Absicht ist, dass Sie mehrere Anweisungen in einer einzigen Transaktion zusammenfassen können, damit andere Abfragen keine halbfertigen Änderungen sehen, aber auch aus Leistungsgründen.

Beachten Sie auch, dass Sie immer Platzhalter verwenden sollten, anstatt Zeichenfolgen miteinander zu verketten.
Beispiel:

cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])

Andernfalls riskieren Sie, SQL-Injection-Angriffe zu ermöglichen.