Come posso sfuggire l'input a un db MySQL in Python3? Sto usando PyMySQL e funziona bene, ma quando provo a fare qualcosa di simile:Come posso sfuggire l'input a un db MySQL in Python3?
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = '{}'".format(request[1]))
non funzionerà se la stringa ha '
o "
. Ho anche provato:
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` = %s",request[1])
Il problema di questo è che la biblioteca (PyMySQL) utilizza la sintassi di formattazione per python2.X, %
, che non funziona più. Ho trovato anche questo possibile soluzione
conn.escape_string()
in here, ma io non so dove per aggiungere questo codice. Questo è tutto quello che ho:
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()
Edit: ho risolto! In PyMySQL il modo giusto è come questo:
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()
dove la linea text = conn.escape(request[1])
è ciò che sfugge il codice. Trovato all'interno del codice PyMySQL. Lì, request[1]
è l'input.
Freddo. Dovresti pubblicare la seconda metà della tua domanda come risposta, però. Puoi accettare la tua risposta. – Grilse
Oops, non ho visto quel pulsante prima. – user1460016
Se risolto, quindi contrassegna la tua domanda come accettata. :-) – Jocelyn