JavaScriptを有効にしてください

【Python】PostgreSQL使用時に文字列をエスケープする方法

 ·  ☕ 1 分で読めます

【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
' '' \\ '

サンプルのシングルクォーテーションとバックスラッシュはエスケープされてシングルクォーテーションで囲まれます。

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer