Python, un langage de programmation équipé sémantique dynamique , est un favori parmi les programmeurs et des codeurs , mais il est tout aussi MySQL. L'intégration de MySQL avec Python n'est souvent pas vraiment un problème pour les programmeurs expérimentés , mais de codage peut être un peu alambiquée en raison de l'API C de mappage de fonction _mysql . Échapper est l'un de ces problèmes. MySQLdb
Pour la base de données API Python, MySQLdb est souvent l'arme de choix . Les codeurs peuvent éviter écriture directe au module à l'aide de l'interface MySQL. Cela permet à l'application de MySQL C API , mais ce n'est pas toujours une tâche facile . MySQL C API a ses propres processus orientés objet . Lorsque vous travaillez avec des fonctions de secours ", mysql_escape_string () " traduit dans MySQL comme « _mysql.escape_string (). " Le problème avec cette stratégie est que, sans bonne s'échapper pour MySQL en Python, il peut y avoir des problèmes liés à cordes compliquées , car ils ne peuvent pas échapper correctement .
insertion de variables
Un autre problème se produit lorsque les codeurs insérer des variables dans des tables MySQL. Dans l'extrait suivant , les inserts de codeur quatre variables dans un tableau .
De cursor.execute ("" "INSERT INTO placard ( chaussures , chaussettes, jambière , supérieur ) VALUES ( Nike, Puma , laine, adidas ) "" ")
Cet extrait peut ne pas fonctionner à moins que le codeur ajoute un caractère d'échappement appropriée, comme "% s " . Les guillemets utilisés sont aussi des caractères d'échappement , mais pour les variables qui fuient , le codeur doit utiliser "% s" .
Pourcentage Connexion
Les modificateurs utilisés dans l'instruction SQL qui sont responsables de la liaison des paramètres peut être un peu déroutant . syntaxe de style «printf» est couramment utilisé dans la bibliothèque cliente MySQL. L'extrait révisé devrait alors ressembler à ceci:
cursor.execute ("" "INSERT INTO placard ( chaussures , chaussettes, jambière , supérieur) VALUES ( % ( nike ) s,% ( puma ) s , % (laine) s,% ( adidas ) s) "" ")
Cependant , en ajoutant les caractères d'échappement n'est pas suffisante pour atténuer le problème . Le simple ajout de ces personnages Alone Now rend le code susceptible de formater les problèmes de chaîne et ouverte à des attaques malveillantes .
Considérations
Le codeur peut être capable de coder un coffre-fort , travail code en y ajoutant d'autres modifications au code. Voici le dernier extrait de travail :
cursor.execute ("" "INSERT INTO Chansons placard ( chaussures , chaussettes, jambière , supérieur ) VALUES ( % s, % s, % s, % s)" , "", ( Nike, Puma , laine, adidas ) )
Un autre problème peut se produire avec le symbole de pourcentage . Si le codeur utilise un signe de pourcentage dans le script, (en particulier dans la chaîne de requête , " ne pas execute () " ), il doit être correctement échappé - deux signes de pourcentage doivent être utilisés. Un des signes de pourcentage agira comme identifiant pour l'évasion .