如何从表中删除记录?

Ris*_*ino 18 python sqlite python-3.x

从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
Run Code Online (Sandbox Code Playgroud)

一切都好,没有错误,但删除功能不起作用!

有没有人有想法?

Cam*_*non 17

参数化查询的正确语法是:

mydata = c.execute("DELETE FROM Zoznam WHERE Name=?", (data3,))
Run Code Online (Sandbox Code Playgroud)

确保参数使用逗号,使其成为python元组.

这将有助于防止在传入格式化字符串时可能出现的SQL注入.更多关于SQL注入的信息

相关文章在这里.


Ris*_*ino -8

感谢所有试图提供帮助的人。正确的代码是:

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)
Run Code Online (Sandbox Code Playgroud)

  • 这很容易受到 SQL 注入攻击! (18认同)