将Python列表传递到SQL查询

2024-05-18 11:40:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在访问表的字段中的项目中进行光标搜索。然后我将它们附加到一个名为“distList”的列表中。我要将列表传递到公式中的SQL查询生成器“WHERE”子句中:

"Field1" in distList

或者在长手上,它看起来像这样:

"Field1" in ('ds(c1)', 'ds(b1)', 'ds(c2)', 'ds(g1)')

列表如下:

['ds(c1)'、'ds(b1)'、'ds(c2)'、'ds(g1)']

我遇到的问题是,上面的SQL公式不喜欢在python列表中查找。它不能识别方括号。它更喜欢圆括号,所以我考虑使用元组。我面临的问题是,在游标从访问表中搜索项之后,我不知道如何构建元组。下面是我的代码示例:

distList = []
for lyr in arcpy.mapping.ListLayers(mxd, "", df):
    if lyr.name == "Disturbance":
           for row in arcpy.SearchCursor(lyr):
                if "ds" in row.Field1:
                     distList.append(row.Field1)
    lyr.definitionQuery = '"Field1"' + "in " + distList

有谁能建议一种方法把我的列表变成一个元组,或者也许是一种更好的方法,把我的项目变成一个有圆括号而不是方括号的格式?

作为解决方法,我尝试将列表转换为字符串str(distList),然后替换括号。那很好,但看起来很麻烦,我相信有更好的办法。

谢谢, 迈克


Tags: 项目方法in列表sqldsb1公式