デフォルトでは、psycopg2は自動的にトランザクションを開始します。つまり、コミットするように指示する必要があります。 commit
に注意してください connection
のメソッドです 、cursor
ではありません 。
conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()
目的は、複数のステートメントを1つのトランザクションにグループ化できるため、他のクエリでは、半分行われた変更だけでなく、パフォーマンス上の理由からも表示されないようにすることです。
また、文字列を連結するのではなく、常にプレースホルダーを使用する必要があることに注意してください。
例:
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])
そうしないと、SQLインジェクション攻撃が可能になるリスクがあります。