質問:
テーブル名をパラメータとして使用して SQL クエリを実行する場合、SQL 構文が正しいことを確認するのは困難です。
解決策:
psycopg2.sql モジュール
公式ドキュメントによると、psycopg2 の SQL モジュールは SQL クエリを動的に生成する安全な方法を提供します。次の構文が導入されています:
<code>from psycopg2 import sql cur.execute(sql.SQL("insert into {table} values (%s, %s)") .format(table=sql.Identifier('my_table')), [10, 20])</code>
このアプローチにより、正しい SQL 構文が保証され、インジェクション攻撃のリスクが排除されます。
注: AsIs メソッドは、テーブル名またはフィールド名を表すために使用しないでください。代わりに、sql モジュールを使用してください。
安全警告:
Pycopg2 は、SQL クエリに変数を渡すために Python 文字列連結または文字列パラメータ補間を使用することに対して強く警告し、潜在的なセキュリティ脆弱性を強調しています。
以上がpsycopg2 SQL クエリのパラメーターとしてテーブル名を安全に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。