【Python】PostgreSQL使用時に文字列をエスケープする方法
【Python】PostgreSQL使用時に文字列をエスケープする方法
PythonでPostgreSQL使用時に文字列をエスケープする方法メモ
SQLエスケープ
psycopg2 を使用します。
psycopg2 を入れるには pip install psycopg2 でインストールが出来ます。
from psycopg2.extensions import adapt
# SQLエスケープ
def sql_escape(param):
# 無名関数化
escape = lambda param: adapt(str(param).encode('utf-8').decode('latin-1'))
# リスト対応
if isinstance(param, list):
param = map(escape, param)
return ",".join(map(str, param))
# 辞書型対応
if isinstance(param, dict):
param = map(escape, param)
return (" , ".join(param.values()))
# その他
return escape(param)
# エスケープ対象文字列
param = " ' \ "
# エスケープ
string = str(sql_escape(param))
# 表示
print(string)
出力結果
$ python main.py
' '' \\ '
サンプルのシングルクォーテーションとバックスラッシュはエスケープされてシングルクォーテーションで囲まれます。