sql >> Databáze >  >> RDS >> PostgreSQL

kurzor.execute(INSERT INTO im_entry.test (+entrym+) HODNOTY ('+p+');)

Ve výchozím nastavení za vás psycopg2 spouští transakce automaticky, což znamená, že mu musíte říct, aby se zavázal. Všimněte si, že commit je metoda connection , nikoli cursor .

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

Záměrem je, že můžete seskupit více příkazů do jedné transakce, takže ostatní dotazy neuvidí poloviční změny, ale také z důvodu výkonu.

Nezapomeňte také, že byste vždy měli používat zástupné symboly namísto spojování řetězců dohromady.
Např.:

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

V opačném případě riskujete provedení útoků SQL injection.




  1. Jak volat uloženou proceduru MySQL z kódu PHP?

  2. Jak nakonfiguruji HikariCP pro postgresql?

  3. Přehled důvěryhodných rozšíření v PostgreSQL 13

  4. Vyloučení nepodporovaných tabulek k zachycení službou Oracle Streams