Python mysql准备的语句足够了,还是需要escape_string()?
这就是:Python mysql准备的语句足够了,还是需要escape_string()?,python,mysql,Python,Mysql,这就是: cursor.execute("Insert INTO visit (pid, date, diagnosisid) VALUES (%s,%s,%s)", (pid, date, diagnosisid)) 够了还是我需要: cursor.execute("Insert INTO visit (pid, date, diagnosisid) VALUES (%s,%s,%s)", (escape_string(pid), escape_string(date), escape_st
cursor.execute("Insert INTO visit (pid, date, diagnosisid) VALUES (%s,%s,%s)",
(pid, date, diagnosisid))
够了还是我需要:
cursor.execute("Insert INTO visit (pid, date, diagnosisid) VALUES (%s,%s,%s)",
(escape_string(pid), escape_string(date), escape_string(diagnosisid)))
?只要不是格式化的字符串,而且它们确实是准备好的语句,您就不必担心
它可能会导致更多的问题,不值得两次逃避。第一个代码示例已经可以安全地防止SQL注入。第二个示例将导致数据库中出现额外的引号,这很可能不是您想要的;第二个选项将加倍您的努力,例如用
\“
替换\”
。你可以自己测试一下
>>> c.execute("SELECT %s, %s", ('"', MySQLdb.escape_string('"')))
1L
>>> c.fetchall()
((u'"', u'\\"'),)
因此,您可以看到第二个版本会在“
之前生成一个不必要的\
。因此第一个版本是可以的。两次转义总是会导致问题。