MySQL删除查询不会执行

时间:2015-10-18 17:28:07

标签: python mysql flask mysql-python

我想查看重复的联系人,并将其从用户的联系人列表中删除。没有错误消息,它根本就没有执行。为什么它不起作用?

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()

2 个答案:

答案 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%'"

允许搜索字符串前后的文本,适用于您的代码