1
私はpython(2.7.10)でpsycopg2
を使用してpostgresql DBに接続します。psycopg2で動的SQL文字列を作成する
SQLクエリ文字列に変数を渡すために決して、は決して、NEVER使用Pythonの文字列連結(+)または文字列パラメータの補間(%):ドキュメントは、動的SQLステートメントの組成についてかなり明確です。ガンポイントでさえも。
psycopg2
バージョン2.7には、この文字列の構成をSQLインジェクションに対して安全に行うための新しいsql
モジュールがあります。あなたは、クエリに識別子を補間するpsycopg2.sql.Identifier
を使用することができます
import psycopg2 as ps
C = psycopg.connect(host='my_host', port=Port, database='My_DB')
cur = C.cursor()
schema = 'some_schema'
table = 'some_table'
SQL = cur.execute("SELECT * FROM "+schema+"."+table"+";")# This is horribly wrong
SQL = cur.execute("SELECT * FROM some_schema.some_table;") # That's what the result should be
join()のアイデアがありませんでした。 – Dschoni