Pas op voor het gebruik van string-interpolatie voor SQL-query's, aangezien deze niet correct aan de invoerparameters ontsnapt en uw toepassing blootstelt aan kwetsbaarheden voor SQL-injectie. Het verschil lijkt misschien triviaal, maar in werkelijkheid is het enorm .
Onjuist (met beveiligingsproblemen)
c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s" % (param1, param2))
Correct (met escapen)
c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s", (param1, param2))
Het vergroot de verwarring dat de modifiers die worden gebruikt om parameters in een SQL-instructie te binden, variëren tussen verschillende DB API-implementaties en dat de mysql-clientbibliotheek printf
gebruikt. stijlsyntaxis in plaats van de meer algemeen aanvaarde '?' marker (gebruikt door bijv. python-sqlite
).