Python , een programmeertaal met dynamische semantiek , is een favoriet onder programmeurs en coders , maar zo is MySQL . Integratie van MySQL met Python is vaak niet veel van een probleem voor ervaren programmeurs , maar codering kan een beetje ingewikkeld omdat C API om _mysql functie mapping krijgen . Ontsnappen is een van deze problemen . MySQLdb Voor de Python database- API , MySQLdb is vaak het wapen van keuze . Coders kan direct write voorkomen module met behulp van de MySQL -interface . Dit maakt de uitvoering van MySQL C API , maar dit kan niet altijd een eenvoudige taak zijn . MySQL C API heeft een eigen object-georiënteerde processen . Bij het werken met escape functies , " mysql_escape_string ( ) " vertaalt in MySQL als " _mysql.escape_string ( ) . " Het probleem met deze strategie is dat zonder de juiste ontsnappen voor MySQL in Python , er kunnen problemen in verband met ingewikkelde strings , omdat ze mogelijk niet goed ontsnappen . invoegen variabelen Een ander probleem doet zich voor wanneer coders voegen variabelen in MySQL tabellen . In het volgende fragment , de coder voegt vier variabelen in een tabel . Cursor.execute ( " " " INSERT INTO kast ( schoenen , sokken , beenwarmer , bovenste ) VALUES ( nike , puma , wol , adidas ) " " " ) op Twitter Deze code kan niet werken tenzij de coder voegt een goede escape-teken zoals" % s " . De dubbele aanhalingstekens gebruikt worden ook ontsnappen personages , maar om te ontsnappen aan variabelen , moet de coder gebruikt " % s " . Procent Teken De modifiers gebruikt in de SQL-instructie die verantwoordelijk zijn voor de parameters binden kan een beetje verwarrend . " Printf " syntax stijl wordt vaak gebruikt in de MySQL client library . De herziene code ziet er dan als volgt uit: cursor.execute ( " " " INSERT INTO kast ( schoenen , sokken , beenwarmer , bovenste ) VALUES ( % ( nike ) s , % ( puma ) s , % ( wol ) s , % ( adidas ) s ) " " " ) op echter , het toevoegen van de escape-tekens is niet genoeg om het probleem te verlichten . Alleen het toevoegen van deze personages nu alleen maakt de code gevoelig voor snaar problemen formatteren en open voor kwaadaardige aanvallen . Overwegingen De coder in staat zijn om een veilige coderen , werken code door het toevoegen van bewerkingen verder aan de code . Hier is de laatste werkende code : cursor.execute ( " " " INSERT INTO Songs kast ( schoenen , sokken , beenwarmer , bovenste ) VALUES ( % s , % s , % s , % s ) " , " " , ( nike , puma , wol , adidas ) ) op Twitter Een ander probleem kan zich voordoen met het percentage symbool . Als de coder gebruikt een percentage teken in het script , ( met name in de query string , " niet uit te voeren ( ) " ) , moet het goed worden ontkomen - twee procentpunten tekens moeten worden gebruikt . Een van de percentagetekens zal fungeren als de identifier voor de ontsnapping .
|