Python3 MySQLdb 查询未执行
Python3 MySQLdb Query Does Not Execute
我在 Python3 中使用 MySQLdb 来执行一些查询。其中之一我有一个 user_ids
的列表,并想根据它们从我的用户 table 中删除。
当我执行查询时,我收到来自 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(用户数))
是的,我正在我的代码中执行 db.commit()
。
以下方法对我有用。 users
列表将直接进入 MySQL 驱动程序,因此注入不是问题:
format_strings = ','.join(['%s'] * len(users))
cursor.execute("DELETE FROM user WHERE id IN (%s)" % format_strings,
tuple(users))
我在 Python3 中使用 MySQLdb 来执行一些查询。其中之一我有一个 user_ids
的列表,并想根据它们从我的用户 table 中删除。
当我执行查询时,我收到来自 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(用户数))
是的,我正在我的代码中执行 db.commit()
。
以下方法对我有用。 users
列表将直接进入 MySQL 驱动程序,因此注入不是问题:
format_strings = ','.join(['%s'] * len(users))
cursor.execute("DELETE FROM user WHERE id IN (%s)" % format_strings,
tuple(users))