Python_MySql文挿入中の内容に単一引用符と二重引用符を同時に含む解決方法

1137 ワード

pythonでMySQLdbモジュールを呼び出してデータ情報を挿入し、入力する情報dataが次のように仮定します.
単一引用符と二重引用符を同時に含む
一般的な挿入文は
sql = "insert into tb (my_str) values('%s')" % (data)
cursor.execute(sql)
values('%s')の%sの外にも引用符が必要です.この引用符がdataの引用符と一致すると、コンテンツエラーが発生します.
解決策1:MySQLdb.escape_string()
MySQLdbモジュールにmysqlのエスケープ関数escape_を付属string()、直接呼び出せばいい
sql = "insert into tb (my_str) values('%s')" % (MySQLdb.escape_string(data))
cursor.execute(sql)

解決策2:エスケープ文字
dataを次の形式にして、データベースを挿入すれば正しいです.
Hello\'World\"!

pythonでの具体的なエスケープ関数は、次のとおりです.
def transferContent(self, content): 
            if content is None: return None else:
            string = ""
            for c in content: if c == '"':
                    string += '\\\"'
                elif c == "'":
                    string += "\\\'"
                elif c == "\\":
                    string += "\\\\"
                else:
                    string += c return string