Как удалить запись из таблицы?
У меня проблема с удалением записи из базы данных sqlite3:
conn = sqlite3.connect('databaza.db')
c = conn.cursor()
data3 = str(input('Please enter name: '))
mydata = c.execute('DELETE FROM Zoznam WHERE Name=?', (data3,))
conn.commit()
c.close
Все хорошо, но удаление не работает!
У кого-нибудь есть идея?
Ответы
Ответ 1
Спасибо всем, кто пытался помочь. Правильный код:
conn = sqlite3.connect('databaza.db')
c = conn.cursor()
conn.text_factory = str
data3 = str(input('Please enter name: '))
query = "DELETE FROM Zoznam WHERE Name = '%s';" % data3.strip()
print(query)
mydata = c.execute(query)
Ответ 2
Правильный синтаксис для параметризованного запроса:
mydata = c.execute("DELETE FROM Zoznam WHERE Name=?", (data3,))
Убедитесь, что параметр использует запятую, чтобы сделать его кортежем python.
Это поможет предотвратить внедрение SQL Injection, которое возможно при передаче в форматированной строке. Подробнее о SQL Injection здесь
Связанный пост здесь.
Ответ 3
Попробуйте:
mydata = c.execute('DELETE FROM Zoznam WHERE Name = (?)', (data3))
Без ',' и '?' между '()'
Ответ 4
Советую сначала создать строку для запроса, а затем выполнить ее. например:
query = "delete from zoznam where name = '%s' " % data3
c.execute(query)
conn.commit()
Ответ 5
Проверьте права доступа к файлам.
В стороне, я предпочитаю токенированный метод:
mydata = c.execute("DELETE FROM Zoznam WHERE Name='%s'" % data3)