【问题标题】:MySQL delete query doesn't executeMySQL删除查询不执行
【发布时间】:2015-10-18 17:28:07
【问题描述】:

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

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

【问题讨论】:

  • 从联系人中删除联系人 LIKE '%{0}%'.format(str(contact_))

标签: python mysql flask mysql-python


【解决方案1】:

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

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

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

占位符可能因您使用的 dbapi 驱动程序而异。您可以使用 Flask-SQLAlchemy/SQLAlchemy 来规范化参数替换以及自动管理连接和会话。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 2012-09-01
      • 2013-04-18
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多