Това обърква почти всички, които работят с MySQLDB. Вие предавате аргументи на функцията execute, а не замествате низове на python. %s в низа на заявката се използва повече като подготвен израз, отколкото като заместване на низ на python. Това също така предотвратява SQL инжектирането, тъй като MySQLDB ще направи бягството вместо вас. Както и преди (използвайки % и заместване на низ), вие сте уязвими към инжектиране.
- Не използвайте кавички. MySQLDB ще ги постави там (ако е необходимо).
-
Използвайте , вместо %. Отново предавате кортеж като аргумент на функцията за изпълнение.
self.dbc.execute("изберете * от кола, където reg=%s" , (reg,))