Comment puis-je échapper à l'entrée d'une base MySQL en Python3?

Comment puis-je échapper à l'entrée d'une base MySQL en Python3?
Je suis en utilisant PyMySQL et fonctionne bien, mais quand j'essaie de faire quelque chose comme:

cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` =  '{}'".format(request[1]))

il ne fonctionnera pas si la chaîne a ' ou ". J'ai aussi essayé:

cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` =  %s",request[1])

Le problème, c'est que la bibliothèque (PyMySQL) utilise la mise en forme de la syntaxe pour Python2.x, %, qui ne fonctionne plus.
J'ai aussi trouvé cette solution possible

conn.escape_string()

dans ici, mais je ne sais pas où ajouter ce code.
C'est tout ce que j'ai:

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: j'ai trouvé! Dans PyMySQL de la bonne façon, c'est comme cela:

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()

Où la text = conn.escape(request[1]) ligne est ce qui échappe au code. Trouvé à l'intérieur de PyMySQL code. Là, request[1] est l'entrée.

Cool. Vous devriez poster la deuxième partie de votre question comme une réponse, si. Vous pouvez accepter votre propre réponse.
Oups, je ne savais pas que le bouton avant.
Si résolu, puis marquer votre propre question comme acceptée. 🙂
Il me dit "Vous pouvez accepter votre propre réponse dans les 11 heures", donc je vais essayer plus tard.

OriginalL'auteur user1460016 | 2012-07-06

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *