Как удалить запись из таблицы?

У меня проблема с удалением записи из базы данных 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)