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

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

最佳答案

您很容易遭受SQL注入攻击。从不直接格式化查询字符串,而始终使用参数化查询。

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

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


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

10-05 18:57
查看更多