Cma*_*mag 10 python sql transactional
在这里我试图删除任何包含"在他们的电子邮件/用户名中的用户.
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)
Run Code Online (Sandbox Code Playgroud)
此输出显示操作已成功完成,但记录仍保留在数据库中.输出还显示了正确的mysql语句:
DELETE FROM `maillist_subscription` WHERE id = '8288754'
Run Code Online (Sandbox Code Playgroud)
感谢你的帮助!
Col*_*lau 20
您需要使用连接对象上的commit()方法提交更改.大多数DBAPI接口使用隐式事务.
另外,不要使用字符串格式来生成SQL查询!它将为您打开SQL注入:
不安全!
# What happens if id = "1'; DROP DATABASE somedb" ?
delstatmt = "DELETE FROM `maillist_subscription` WHERE id = '%s'" % (id,)
cursor.execute(delstatmt)
conn.commit()
Run Code Online (Sandbox Code Playgroud)
安全!
delstatmt = "DELETE FROM `maillist_subscription` WHERE id = ?"
cursor.execute(delstatmt, (id,))
conn.commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20349 次 |
| 最近记录: |