Python, et programmeringssprog udstyret med dynamiske semantik , er en favorit blandt programmører og programmører , men så også er MySQL. Integration af MySQL med Python ofte ikke meget af et problem for erfarne programmører , men kodning kan få lidt snørklet , fordi C API til at _mysql funktion kortlægning. Escaping er et af disse problemer . MySQLdb
Python database API , MySQLdb ofte det foretrukne våben . Coders kan undgå direkte skrive til modul ved hjælp af MySQL interface. Dette muliggør gennemførelse af MySQL C API , men dette kan ikke altid være en enkel opgave . MySQL C API har sine egne objektorienterede processer . Når du arbejder med escape -funktioner , " mysql_escape_string ()" oversættes i MySQL som " _mysql.escape_string (). " Spørgsmålet med denne strategi er, at uden ordentlig flygter til MySQL i Python, kan der være problemer forbundet med komplicerede strenge , da de kan ikke undslippe korrekt.
Indsættelse variable
andet problem opstår, når kodere indsætter variabler i MySQL tabeller . I det følgende uddrag , coder indsætter fire variabler i en tabel.
Cursor.execute ( "" " INSERT INTO skab ( sko , strømper , legwarmer , øvre ) VALUES ( Nike, Puma, uld, adidas ) " " ")
Denne kodestykke virker muligvis ikke , medmindre coder tilføjer en ordentlig escape-tegn såsom" % s " . De dobbelte anvendte citater er også flygte tegn , men for flygter variabler , skal coder bruge "% s" .
Procenttegn
modifikatorer , der anvendes i SQL-sætningen , der er ansvarlige for binding af parametrene kan være lidt forvirrende. " printf " stil syntaks er almindeligt anvendt i MySQL klient biblioteket. Den reviderede snippet skal så se sådan ud : Hej
cursor.execute ( "" " INSERT INTO skab ( sko , strømper , legwarmer , øvre ) VALUES ( % ( nike ) s , % ( puma ) s , % (uld ) s, % ( adidas ) s ) " " ")
dog tilføjer escapetegn er ikke nok til at afhjælpe problemet. Blot at tilføje disse tegn alene gør nu koden modtagelige for formateringsstreng spørgsmål og åbne for ondsindede angreb .
Overvejelser
coder kan være i stand til at kode et sikkert , der arbejder kode ved at tilføje yderligere redigeringer af koden. Her er den endelige arbejde snippet : Hej
cursor.execute ( "" " INSERT INTO Songs skab ( sko , strømper, Legwarmer , øvre ) VALUES ( % s, % s, % s, % s )" , "" , ( nike , Puma , uld, adidas ) )
andet problem kan opstå med den procentdel symbol. Hvis coder anvender en procentsats skilt i manuskriptet, ( specifikt i søgestrengen , " ikke at udføre ()" ), skal det være ordentligt undslap - to procentpoint skilte skal anvendes. En af de procentvise skilte vil fungere som identifikator for flugt .