Python3 MySQLdb查询无法执行

马修·布热津斯基(Matthew Brzezinski)

我在Python3中使用MySQLdb执行一些查询。我有一个列表,user_ids并希望基于这些列表从我的用户表中删除。

当我执行查询时,我从MySQLdb收到警告:

Warning: (1292, "Truncated incorrect DOUBLE value: '108, 114, 109, 115'")

尝试执行的查询是:

DELETE FROM user
WHERE id IN (108, 114, 109, 115);

我的代码如下所示:

cur.execute(get_users)
users = cur.fetchall()
users = [item[0] for item in users]
users = ", ".join(str(user) for user in users)

cur.execute(delete_query, [users])

我也尝试执行以下操作,它不会导致任何警告,但是检查我的数据库后,我仍然可以看到那些现有用户:

users = ", ".join("\'{}\'".format(user) for user in users)

以下代码可以很好地工作,但是并不安全:cur.execute(delete_query.format(users))

是的,我正在db.commit()我的代码中执行一个

科迪

以下方法对我有用。users列表将直接发送到MySQL驱动程序,因此注入不是问题:

format_strings = ','.join(['%s'] * len(users))
cursor.execute("DELETE FROM user WHERE id IN (%s)" % format_strings,
                tuple(users))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章