【发布时间】:2017-06-14 08:52:14
【问题描述】:
我的 python 代码中有以下查询:
query = """SELECT id
FROM dings_archive
WHERE doorbot_id IN {doorbot_ids};
"""
query = query.format(doorbot_ids=tuple(doorbot_ids))
doorbot_ids 的类型为 List[int],当我的数组仅包含 1 个元素时我遇到了问题,因为在 query.format 之后我有以下查询:
SELECT id
FROM dings_archive
WHERE doorbot_id IN (123,);
如您所见,我有一个错误,因为末尾有逗号 ,。如何解决这个问题?
【问题讨论】:
-
也许你应该做
query.format(doorbot_ids=", ".join(doorbot_ids))(在query中手动添加括号) -
因为 door_bots 是一个元组
-
@RompePC 这是个坏主意,因为人们可能会注入 SQL 代码并造成严重破坏。
-
从列表或元组中取出 repr 并做一些正则表达式?
-
@Nils Werner 在这两种情况下最终的 SQL 都是相同的(除了最后的逗号),
(123),我不明白为什么它会造成严重破坏。如果它在一个失败,它在另一个失败。另一种情况是他/她在这样做时正在逃避价值。
标签: python postgresql