gpt4 book ai didi

python mysql删除语句不起作用

转载 作者:太空狗 更新时间:2023-10-29 18:20:39 29 4
gpt4 key购买 nike

在这里,我试图删除所有在其电子邮件/用户名中包含 "的用户。

    def removeQuote(self, tbl,record):
""" Updates the record """
statmt="select id from %s WHERE `email` LIKE '%%\"%%'" % (tbl)
self.cursor.execute(statmt)
rows=list(self.cursor.fetchall())
for idx, val in enumerate(rows):
id= val[0]
delstatmt = "DELETE FROM `maillist_subscription` WHERE id = '%s'" % id
print delstatmt
self.cursor.execute(delstatmt)

此输出显示操作成功完成,但记录保留在数据库中。输出还显示了正确的 mysql 语句:

DELETE FROM `maillist_subscription` WHERE id = '8288754'

感谢您的帮助!

最佳答案

您需要使用连接对象上的 commit() 方法来提交更改。大多数 DBAPI 接口(interface)使用隐式事务。

此外,不要使用字符串格式来生成 SQL 查询!它将打开你的 SQL 注入(inject):

不安全!!

# What happens if id = "1'; DROP DATABASE somedb" ?
delstatmt = "DELETE FROM `maillist_subscription` WHERE id = '%s'" % (id,)
cursor.execute(delstatmt)
conn.commit()

安全!

delstatmt = "DELETE FROM `maillist_subscription` WHERE id = ?"
cursor.execute(delstatmt, (id,))
conn.commit()

关于python mysql删除语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082360/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com