我有一个函数,我得到一个字符串作为参数。我想将此字符串保存到数据库中。所以我有一个命令:
sql_command = """INSERT INTO some_table(some_text_row) VALUE (
'{0}');""".format(some_text)
但参数可以包含'
之类的字符。所以我需要替换这种角色。我用这个函数做到了这一点:
some_text = given_parameter.replace("'", r"\'")
但现在出现了奇怪的行为:有时,我得到\\'
的结果,有时我会得到\'
的结果。我想要第二个。
为您提供更多信息:given_parameter
是网页的HTML代码。我从名为requests
有没有人有一些东西?
答案 0 :(得分:4)
不要使用字符串格式构建查询 - 这是不安全的,您使其易受SQL injections攻击。
相反,参数化查询并让mysql驱动程序担心引号:
sql_command = """
INSERT INTO
some_table(some_text_row)
VALUES
(%s)"""
cursor.execute(sql_command, (some_text, ))