Escape Query for MySQL i Python

Escape Query for MySQL i Python


Python, et programmeringsspråk 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 få litt innfløkt grunn av C API til _mysql funksjon kartlegging. Rømmer er en av disse problemene.

MySQLdb

For databasen API Python, er MySQLdb ofte våpenet av valget. Programmerere kan unngå direkte skrive til modul ved hjelp av MySQL-grensesnitt. Dette muliggjør gjennomføring av MySQL C API, men dette kan ikke alltid være en enkel oppgave. MySQL C API har sine egne objektorienterte prosesser. Når du arbeider med rømnings 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 riktig.

Sette variabler

Et annet problem oppstår når programmerere setter variablene i MySQL tabeller. I det følgende tekstutdrag, koder setter fire variabler i en tabell.

cursor.execute ( "" "INSERT INTO skap (sko, sokker, leggvarmer, øvre)
VERDIER (nike, puma, ull, adidas) "" ")

Denne tekstutdrag kan ikke fungere med mindre koder legger en skikkelig flukt karakter som "% s". De doble anførselstegn som brukes er også unnslippe tegn, men for å unnslippe variabler, koder må bruke "% s".

prosent Sign

De modifikatorer brukes i SQL-setningen som er ansvarlig for binding parametrene kan være litt forvirrende. "Printf" style syntaks er ofte brukt i MySQL klientbiblioteket. Den reviderte biten skal da se slik ut:

cursor.execute ( "" "INSERT INTO skap (sko, sokker, leggvarmer, øvre)
VERDIER (% (Nike) s,% (puma) s,% (ull) s,% (adidas) s) "" ")

Men, legger de escape-tegn er ikke nok til å lindre problemet. Bare å legge disse tegnene alene gjør nå koden utsatt for formatstrengen problemer og åpne for ondsinnede angrep.

betraktninger

Koder kan være i stand til å kode en trygg, arbeider kode ved å legge til ytterligere endringer i koden. Her er den endelige arbeidsbiten:

cursor.execute ( "" "INSERT INTO Songs skap (sko, sokker, leggvarmer, øvre)
VERDIER (% s,% s,% s,% s) "" ", (nike, puma, ull, adidas))

Et annet problem kan oppstå med den prosentvise symbol. Hvis koderen bruker et prosenttegn i manuset, (spesielt i søkestrengen, "unnlater å utføre ()"), det skal være riktig rømt - to prosent tegn må brukes. En av de prosent skiltene vil fungere som identifikator for rømning.