有什么方法可以将 python 集转换为在 SQL 的 "IN" 语句中使用?
Is there any way to convert python set to be used in SQL's "IN" statement?
我正在尝试创建一个 SQL 语句,用一组键更新多行。我确实意识到我可以只 运行 为每个 with 语句为每个键,但这看起来像 "more correct" 并且对我来说更快。
这是我得到的:
def end_actions(self, timestamp, ids):
statement = "UPDATE items " \
"SET end_time = " + timestamp + " " \
"WHERE auction IN " + ids + ";"
self.execute_statement(statement)
问题是如何格式化设置为 SQL 的 IN 语句接受的 ID。
谢谢。
不知道你的身份证是什么类型的。我假设它是一组整数。您希望 SQL 子句看起来像这样 WHERE auction IN (1, 2, 3);
。因此,您可以 map
您的集合到一个字符串列表,然后使用逗号分隔符将其传递给 join
并将其括在括号中。
"WHERE auction IN (" + ", ".join(map(str, ids)) + ");"
编辑:如果您想要字符串,您可能需要先将其用引号引起来
"WHERE auction IN (" + ", ".join("'" + id + "'" for id in ids) + ");"
我正在尝试创建一个 SQL 语句,用一组键更新多行。我确实意识到我可以只 运行 为每个 with 语句为每个键,但这看起来像 "more correct" 并且对我来说更快。
这是我得到的:
def end_actions(self, timestamp, ids):
statement = "UPDATE items " \
"SET end_time = " + timestamp + " " \
"WHERE auction IN " + ids + ";"
self.execute_statement(statement)
问题是如何格式化设置为 SQL 的 IN 语句接受的 ID。
谢谢。
不知道你的身份证是什么类型的。我假设它是一组整数。您希望 SQL 子句看起来像这样 WHERE auction IN (1, 2, 3);
。因此,您可以 map
您的集合到一个字符串列表,然后使用逗号分隔符将其传递给 join
并将其括在括号中。
"WHERE auction IN (" + ", ".join(map(str, ids)) + ");"
编辑:如果您想要字符串,您可能需要先将其用引号引起来
"WHERE auction IN (" + ", ".join("'" + id + "'" for id in ids) + ");"