2015-10-18 102 views
0

我想检查重复的联系人并将其从用户的联系人列表中删除。没有错误信息,它只是不执行。为什么它不起作用?MySQL删除查询不会执行

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

DELETE FROM contacts WHERE contact LIKE'%{0}%'。format(str(contact_)) –

回答

0

,如果你正在做的搜索,你应该使用(我猜):

"DELETE FROM blabla WHERE contact LIKE '%what i am searching%'" 

允许文本之前和查找的字符串后,应用到你的代码

1

你是容易受到SQL注入攻击。不要直接格式化查询字符串,总是使用参数化查询。

你查询当前匹配等于contact_接触,但你的LIKE利用意味着要匹配联系人的包含该值。在查询中使用通配符。

cur.execute('delete from contacts where contact like ?', ('%{}%'.format(contact_),)) 

根据您使用的dbapi驱动程序,占位符可能有所不同。您可以使用Flask-SQLAlchemy/SQLAlchemy规范化参数替换以及自动管理连接和会话。