sql >> Databasteknik >  >> RDS >> PostgreSQL

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

Som standard startar psycopg2 transaktioner åt dig automatiskt, vilket innebär att du måste säga åt den att begå. Observera att commit är en metod för connection , inte cursor .

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

Avsikten är att du kan gruppera flera uttalanden i en enda transaktion, så att andra frågor inte kommer att se halvgjorda ändringar, men också av prestandaskäl.

Observera också att du alltid bör använda platshållare, istället för att sammanfoga strängar.
T.ex.:

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

Annars riskerar du att göra SQL-injektionsattacker möjliga.




  1. Ställ in tidszon i PHP och MySQL

  2. Rails autotilldelnings-id som redan finns

  3. ORDER BY-satsen är ogiltig i vyer, inline-funktioner, härledda tabeller, underfrågor och vanliga tabelluttryck

  4. Undvikande enstaka offert i PLSQL