我想查看重复的联系人,并将其从用户的联系人列表中删除。没有错误消息,它根本就没有执行。为什么它不起作用?
cmd = "DELETE FROM contacts WHERE contact LIKE '{0}'.format(str(contact_))"
print(cmd)
# DELETE FROM contacts WHERE contact LIKE 'Ilovecake'
cur.execute(cmd)
conn.commit()
conn.close()
答案 0 :(得分:1)
你对SQL注入攻击很有挑剔。永远不要直接格式化查询字符串,始终使用参数化查询。
您的查询目前与等于contact_
的联系人匹配,但您使用LIKE
表示您希望匹配包含该值的联系人。在查询中使用通配符。
cur.execute('delete from contacts where contact like ?', ('%{}%'.format(contact_),))
占位符可能会有所不同,具体取决于您使用的dbapi驱动程序。您可以使用Flask-SQLAlchemy / SQLAlchemy来规范化参数替换以及自动管理连接和会话。
答案 1 :(得分:0)
如果你正在进行某种搜索,你应该使用(I GUESS):
"DELETE FROM blabla WHERE contact LIKE '%what i am searching%'"
允许搜索字符串前后的文本,适用于您的代码