Jak mogę uniknąć wejścia do bazy danych MySQL w Pythonie3?
Jak mogę uniknąć wejścia do bazy danych MySQL w Pythonie3? Używam PyMySQL i działa dobrze, ale kiedy próbuję zrobić coś takiego:
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = '{}'".format(request[1]))
nie zadziała, jeśli łańcuch ma'
lub"
. Próbowałem też:
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = %s",request[1])
Problem polega na tym, że biblioteka (PyMySQL) używa składni formatowania dla Python2.x,%
, to już nie działa. Znalazłem też to możliwe rozwiązanie
conn.escape_string()
wtutaj, ale nie wiem, gdzie dodać ten kod. To wszystko co mam:
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()
Edytuj: rozwiązałem to! W PyMySQL właściwy sposób jest taki:
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()
Gdzietext = conn.escape(request[1])
linia jest tym, co wymyka się kodowi. Znaleziono go wewnątrz kodu PyMySQL. Tam,request[1]
jest wejście.