sql >> データベース >  >> RDS >> PostgreSQL

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

    デフォルトでは、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インジェクション攻撃が可能になるリスクがあります。




    1. Oracleがタイムスタンプと日付を比較

    2. LinuxでMySQLまたはMariaDBのルートパスワードを変更する方法

    3. PHPでSQLインジェクションを防ぐにはどうすればよいですか?

    4. SQLServerでクエリ結果の行数を返す方法