sql >> Base de Datos >  >> RDS >> PostgreSQL

cursor.execute(INSERTAR EN im_entry.test (+entrym+) VALORES ('+p+');)

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.