有什么方法可以将 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) + ");"