Domyślnie psycopg2 uruchamia transakcje automatycznie, co oznacza, że musisz powiedzieć mu o zatwierdzeniu. Zwróć uwagę, że commit
jest metodą connection
, a nie cursor
.
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
Intencją jest to, że możesz zgrupować wiele instrukcji w jednej transakcji, aby inne zapytania nie widziały w połowie dokonanych zmian, ale także ze względu na wydajność.
Pamiętaj też, że zawsze powinieneś używać symboli zastępczych, zamiast łączyć ze sobą ciągi.
Np.:
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
W przeciwnym razie ryzykujesz umożliwienie ataków typu SQL injection.