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]
、入力があります。