公式ドキュメントによると:
SQLクエリを動的に生成する必要がある場合(たとえば、テーブル名を動的に選択する場合 )psycopg2.sqlモジュールが提供する機能を使用できます。
sql
モジュールはpsycopg2バージョン2.7の新機能です。構文は次のとおりです。
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
詳細:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[更新2017-03-24:AsIs
テーブルまたはフィールドの名前、新しいsql
を表すために使用しないでください 代わりにモジュールを使用する必要があります:https://stackoverflow.com/a/42980069/5285608]
また、psycopg2のドキュメントによると:
警告 :決して、決して 、決して Python文字列連結を使用する(
+
)または文字列パラメータの補間(%
)変数をSQLクエリ文字列に渡します。銃を突きつけても。