Theo mặc định, psycopg2 tự động bắt đầu các giao dịch cho bạn, có nghĩa là bạn phải yêu cầu nó cam kết. Lưu ý rằng commit
là một phương thức của connection
, không phải cursor
.
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
Mục đích là bạn có thể nhóm nhiều câu lệnh lại với nhau trong một giao dịch, vì vậy các truy vấn khác sẽ không thấy các thay đổi được thực hiện một nửa mà còn vì lý do hiệu suất.
Cũng lưu ý rằng bạn nên luôn sử dụng trình giữ chỗ, thay vì nối các chuỗi với nhau.
Ví dụ:
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
Nếu không, bạn có nguy cơ thực hiện các cuộc tấn công chèn SQL.