在 ArcGIS 中将整数值输入 SQL 语句时出现问题

Trouble inputting interger values into an SQL statement within ArcGIS

因此,我正在定义一个用于 ArcGIS 工具的函数,该函数将验证属性、捕获错误并获取用户输入以纠正这些错误。我希望该工具 select 并缩放到当前正在评估的部分,以便他们可以做出明智的决定。这就是我一直在使用的,并且效果很好。但是 CONVWGID 是将要更改的变量,我不确定如何将该变量输入到 SQL 语句中而不会导致错误。

这就是我测试逻辑的方式:

def selectzoom():
    arcpy.SelectLayerByAttribute_management(Convwks, "NEW_SELECTION", " [CONVWGID] = 10000001")

    mxd = arcpy.mapping.MapDocument('CURRENT')
    df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
    df.zoomToSelectedFeatures()
    arcpy.RefreshActiveView()

然后我需要将变量处理到函数中以接受不同的 CONVWGID 值,这给了我一个 Runtime/TypeError 我应该知道会发生的事情。

运行时错误 - 回溯(最近一次调用最后一次):- 文件 "string",第 1 行,在模块中 - TypeError:无法连接 'str' 和 'int' 对象

def selectzoom(convwkgid):
    delimfield = '" [CONVWGID] = ' + convwkgid + ' "'
    arcpy.SelectLayerByAttribute_management(Convwks, "NEW_SELECTION", delimfield)

    mxd = arcpy.mapping.MapDocument('CURRENT')
    df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
    df.zoomToSelectedFeatures()
    arcpy.RefreshActiveView()

当我更改 delimfield 行以将整数更改为字符串时,它 select 包含整个功能 class 中的所有属性。不仅仅是通过函数调用传递的那个。

delimfield = '"[CONVWGID] = ' + str(convwkgid) + '"'

我对 SQL 并不满意,也许我遗漏了一些基本的东西,但我无法弄清楚为什么当我基本上给它相同的时候它不起作用信息:

"[CONVWGID] = 10000001"
'"[CONVWGID] = ' + str(convwkgid) + '"'

原来是我的单引号中额外包含双引号引起了这个问题。

感谢@Emil Brundage 的帮助!

假设 convwkgid = 10000001

'"[CONVWGID] = ' + str(convwkgid) + '"' doesn't equal "[CONVWGID] = 10000001"

'"[CONVWGID] = ' + str(convwkgid) + '"' would actually be '"CONVWGID] = 10000001"'

试试看:

'[CONVWGID] = ' + str(convwkgid)