如何在Python3中将输入转义到MySQL数据库?我正在使用PyMySQL,并且工作正常,但是当我尝试执行以下操作时:
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = '{}'".format(request[1]))
如果字符串具有'或,则它将不起作用"。我也尝试过:
'
"
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = %s",request[1])
问题在于该库(PyMySQL)使用了Python2.x的格式语法,该语法%不再起作用。我也发现了这个可能的解决方案
%
conn.escape_string()
在这里,但我不知道在何处添加此代码。这就是我得到的一切:
import pymysql import sys conn = pymysql.connect( host = "localhost", user = "test", passwd = "", db = "test") cursor = conn.cursor() cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = {}".format(request[1])) result = cursor.fetchall() cursor.close() conn.close()
编辑:我解决了!在PyMySQL中,正确的方法是这样的:
import pymysql import sys conn = pymysql.connect(host="localhost", user="test", passwd="", db="test") cursor = conn.cursor() text = conn.escape(request[1]) cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = {}".format(text)) cursor.close() conn.close()
当text =conn.escape(request[1])行是什么逃脱的代码。在PyMySQL代码中找到它。在那里,request[1]就是输入。
text =conn.escape(request[1])
request[1]
解决了。在PyMySQL中,正确的方法是这样的: