Обычно ваши операции SQL потребуются
использовать значения из переменных Python.
Вы не должны собирать свой запрос
используя строковые операции Python
потому что это небезопасно; это делает
ваша программа уязвима для SQL
инъекционная атака.
Вместо этого используйте параметр DB-API
замена. Положил ? в качестве заполнителя
везде, где вы хотите использовать значение, и
затем предоставить набор значений в качестве
Второй аргумент для курсора
метод execute (). (Другая база данных
модули могут использовать разные
заполнитель, такой как% s или: 1.) Для
Пример:
# Never do this -- insecure!
symbol = 'IBM'
c.execute("... where symbol = '%s'" % symbol)
# Do this instead
t = (symbol,)
c.execute('select * from stocks where symbol=?', t)
# Larger example
for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]:
c.execute('insert into stocks values (?,?,?,?,?)', t)