Làm cách nào để thoát khỏi dữ liệu nhập vào một db MySQL trong Python3? Tôi đang sử dụng PyMySQL và hoạt động tốt, nhưng khi tôi cố gắng làm điều gì đó như:Làm cách nào để thoát khỏi dữ liệu nhập vào một db MySQL trong Python3?
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = '{}'".format(request[1]))
nó sẽ không hoạt động nếu chuỗi có '
hoặc "
. Tôi cũng đã cố gắng:
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = %s",request[1])
Vấn đề ở đây là các thư viện (PyMySQL) sử dụng cú pháp định dạng cho Python2.x, %
, điều đó không có tác dụng nữa. Tôi cũng tìm thấy giải pháp khả thi này
conn.escape_string()
trong here, nhưng tôi không biết nơi nào để thêm mã này. Đây là tất cả những gì tôi có:
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()
Chỉnh sửa: Tôi đã giải quyết! Trong PyMySQL đúng cách là như thế này:
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()
Trường hợp dòng text = conn.escape(request[1])
là những gì thoát khỏi mã. Tìm thấy nó bên trong mã PyMySQL. Ở đó, request[1]
là đầu vào.
Tuyệt. Tuy nhiên, bạn nên đăng một nửa câu hỏi của mình dưới dạng câu trả lời. Bạn có thể chấp nhận câu trả lời của riêng bạn. – Grilse
Rất tiếc, tôi không thấy nút đó trước đây. – user1460016
Nếu được giải quyết, hãy gắn cờ câu hỏi của riêng bạn khi được chấp nhận. :-) – Jocelyn