Python3で入力をMySQLデータベースにエスケープするにはどうしたらいいですか? 私はPyMySQLを使用し、正常に動作しますが、私は次のように何かをしようとしています:文字列が'
または"
を持っている場合、それは動作しませんPython3で入力をMySQLデータベースにエスケープするにはどうしたらいいですか?
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = '{}'".format(request[1]))
。私も試してみました:
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = %s",request[1])
これに伴う問題は、ライブラリ(PyMySQL)はもう動作しませんPython2.x、%
、の書式構文を使用していることです。 私はまたhereにこの可能性のある解決策
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では正しい方法は、このようなものです:text = conn.escape(request[1])
行は、コードをエスケープするものである
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()
。 PyMySQLコードの中でそれを見つけました。そこには、request[1]
が入力です。
クール。あなたはあなたの質問の後半を回答として投稿するべきです。あなたは自分の答えを受け入れることができます。 – Grilse
おっと、以前はそのボタンが見えませんでした。 – user1460016
解決された場合は、自分の質問に合格とフラグを付けます。 :-) – Jocelyn