To mate asi každého, kdo pracuje s MySQLDB. Předáváte argumenty funkci provádění, neprovádíte náhradu řetězce python. %s v řetězci dotazu se používá spíše jako připravený příkaz než jako náhrada řetězce python. To také zabraňuje vkládání SQL, protože MySQLDB udělá únik za vás. Jak jste to měli dříve (pomocí % a substituce řetězců), jste zranitelní vůči injekci.
- Nepoužívejte uvozovky. MySQLDB je tam umístí (v případě potřeby).
-
Použijte , namísto %. Opět předáváte n-tici jako argument funkci provádění.
self.dbc.execute("vyberte * z auta, kde reg=%s" , (reg,))