【发布时间】:2021-08-17 10:57:25
【问题描述】:
我有一个字符串列表如下:
['a', 'b', 'c']
我需要从中创建一个 SQL 查询。我正在编写这种查询,因为我正在为 BigQuery 使用 python 客户端,这就是这样做的方法。查询将如下所示:
WHERE data IN ('a', 'b', 'c')
我尝试过这样做:
WHERE data IN ({", ".join(myList)})
但结果是:
WHERE data IN (a, b, c)
我应该怎么做?
精确编辑
实际上我的问题是我已经在一个 f 字符串中并且不能在其中使用反斜杠来转义我的引号。我确实喜欢这样:
quote = "'"
f'WHERE gcloud_id IN ({", ".join(f"{quote}{ g_id }{quote}" for g_id in gcloud_id)}) '
谢谢
【问题讨论】:
-
阅读您使用的任何数据库引擎的文档,您不应该使用字符串手动构建 SQL 查询。
-
他们需要被引用,
", ".join(myList.map(lambda x: f"\"{x}\"")),这也是个坏主意。 -
看看这个在 SQLalchemy pypi.org/project/SQLAlchemy 它提供了一个构造 SQL 表达式的系统
-
@Kimor,请尝试在 SO 中搜索现有答案,因为如果问题是微不足道的或其他人普遍面临的问题,10 次中有 9 次您会找到您正在寻找的解决方案。
-
我正在使用大查询,这是构建 SQL 查询的方式。