【Python】PostgreSQL使用時に文字列をエスケープする方法
PythonでPostgreSQL使用時に文字列をエスケープする方法メモ
SQLエスケープ
psycopg2
を使用します。
psycopg2
を入れるには pip install psycopg2
でインストールが出来ます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| 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)
|
出力結果
1
2
| $ python main.py
' '' \\ '
|
サンプルのシングルクォーテーションとバックスラッシュはエスケープされてシングルクォーテーションで囲まれます。
参考