Python , et programmeringsspråk er utstyrt med dynamiske semantikk , er en favoritt blant programmerere og programmerere , men så er også MySQL. Integrering av MySQL med Python er ofte ikke mye av et problem for erfarne programmerere , men koding kan bli litt innfløkt grunn av C API til _mysql funksjon kartlegging. Rømmer er en av disse problemene . MySQLdb
For Python database API, er MySQLdb ofte det foretrukne våpen . Programmerere kan unngå direkte skrive til modul ved hjelp av MySQL -grensesnittet . Dette gjør at gjennomføringen av MySQL C API , men dette kan ikke alltid være en grei oppgave . MySQL C API har sine egne objekt - orienterte prosesser . Når du arbeider med escape funksjoner , " mysql_escape_string ( )" oversettes i MySQL som " _mysql.escape_string ( ) . " Problemet med denne strategien er at uten skikkelig rømmer for MySQL i Python , kan det være problemer forbundet med kompliserte strenger , som de ikke kan unnslippe skikkelig .
sette inn variabler
Et annet problem oppstår når programmerere setter inn variabler i MySQL tabeller . I følgende kodebit de coder inserts fire variabler i en tabell .
Cursor.execute ("" " INSERT INTO skap ( sko , sokker , legwarmer , øvre ) VALUES ( nike, puma , ull , adidas ) " " ")
p Dette utdraget kanskje ikke fungerer med mindre coder legger en skikkelig escape-tegnet som" % s " . De doble anførselstegnene brukes er også unnslippe tegn , men for escaping variabler , må coder bruke "% s" .
Percent Logg
modifikatorer brukes i SQL-setningen som er ansvarlig for binding parametrene kan være litt forvirrende. " Printf " stil syntaks er ofte brukt i MySQL klient biblioteket. Den reviderte snutten skal da se slik ut : en
cursor.execute ("" " INSERT INTO skap ( sko , sokker , legwarmer , øvre) VALUES ( % ( Nike ) s , % ( puma ) s , % ( ull ) s,% ( adidas ) s ) " " ")
imidlertid legge til omgåelsestegn er ikke nok til å lindre problemet. Bare å legge disse tegnene alene nå gjør koden utsatt for formatstreng problemer og åpne for ondsinnede angrep .
Hensyn
koder kan være i stand til å kode en trygg , jobber kode ved å tilsette ytterligere endringer til koden. Her er den endelige arbeid snippet : en
cursor.execute ("" " INSERT INTO Songs skap ( sko , sokker, legwarmer , øvre ) VALUES ( % s , % s , % s , % s )" , "", ( nike, puma , ull , adidas ) )
Et annet problem kan oppstå med den prosentvise symbol. Dersom koderen anvender en prosent-tegn i manuskriptet , ( spesielt i søkestrengen ", å unnlate å utføre ( ) ») , bør det være riktig rømt - to prosent- skilt må brukes. En av de prosentvise skiltene vil fungere som identifikator for rømning .