81 votes

Chaîne d'échappement Python pour MySQL

J'utilise Python et MySQLdb pour télécharger des pages Web et les stocker dans une base de données. Le problème que j'ai est que je ne peux pas enregistrer des chaînes compliquées dans la base de données car elles ne sont pas correctement échappées.

Existe-t-il une fonction en Python que je puisse utiliser pour échapper à une chaîne pour MySQL? J'ai essayé avec ''' (plusieurs citations simples) et """ , mais cela n'a pas fonctionné. Je sais que PHP a mysql_escape_string() , y a-t-il quelque chose de similaire en Python?

Merci.

105voto

miku Points 63392
 conn.escape_string()
 

Voir Mappage des fonctions de l'API MySQL C: http://mysql-python.sourceforge.net/MySQLdb.html

-2voto

tommygee100 Points 52

Utiliser l' re.escape() de la fonction pour cela:

4.2.3 re Module De Contenu

d'échappement(string)

Retourne la chaîne avec tous les caractères alphanumériques backslashed; ceci est utile si vous voulez correspondre à l'arbitraire d'un littéral de chaîne de caractères qui peut avoir régulièrement l'expression des caractères de remplacement en elle.

Dans l'exemple ci-dessous, vous pouvez voir que tous les caractères spéciaux sont échappés qui vous permet de stocker de fantaisie html dans les bases de données MySQL.

re.escape('*&^%$^HELLO')
'\\*\\&\\^\\%\\$\\^HELLO'

-3voto

Kef Schecter Points 159

Pourquoi au nom de Dieu voudriez-vous échapper à la ficelle? Toujours utiliser des requêtes paramétrées. Ils ne sont pas moins puissants, ni faciles à utiliser, et ils sont beaucoup plus sûrs. Si vous utilisez toujours des requêtes paramétrées, vous n'aurez pratiquement aucune chance d'introduire des attaques par injection SQL dans votre code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X