Не видя больше кода, трудно полностью решить проблему, но, глядя на ваш код, я думаю, что проблема может быть в %s
в этой строке:
inventoryCurs.execute('''UPDATE table SET status = 'Out of Stock' WHERE id = %s)''', i[0])
Согласнодокументация для модуля SQLite в Python 2 и Python 3 , для модуля sqlite3
требуется ?
в качестве заполнителя, а не %s
или строка какого-либо другого формата.
Согласно документации Python 2 , %s
заполнитель можно использовать следующим образом:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
# Never do this -- insecure!
symbol = 'IBM'
c.execute("select * from stocks where symbol = '%s'" % symbol)
, но это простой форматстрока, а не заполнитель базы данных.Кроме того, как видно из комментария, вы никогда не должны строить запросы таким образом, потому что это делает их уязвимыми для внедрения SQL.Скорее, вы должны построить их так, используя вместо этого ?
:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
# Do this instead
t = (symbol,)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
В документации есть более подробная информация, но я считаю, что это решение ошибки, которую вы опубликовали.