小编典典

如何在Python3中将输入转义到MySQL数据库?

sql

如何在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]就是输入。


阅读 171

收藏
2021-03-23

共1个答案

小编典典

解决了。在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]就是输入。

2021-03-23