我正在使用arcpy为ArcMap编写工具箱。出于参数验证的目的,我想使用arcpy.da.SearchCursor()
检查查询是否返回任何匹配项。我尝试了这两种方法:
cursor = arcpy.da.SearchCursor("Table", "Field", "Field = 'Value'")
if not cursor:
#Do something.
if cursor == None:
#Do something.
在这两种情况下,即使游标不包含行,也不会执行if
语句中的代码。 documentation未提及.count()
或.empty()
等方法。那怎么办呢?
答案 0 :(得分:1)
以下内容应该通过计算游标返回的行数来实现:
i = 0
with arcpy.da.SearchCursor("your_table", ["your_fields"], "your_query") as cursor:
for row in cursor:
i += 1
if i == 0:
print "No results returned."
注意光标的构造,其中字段列表是第二个参数。此外,首选使用“with-as”语法,因为您的光标对象将被自动删除。
答案 1 :(得分:1)
TomAdair的答案很有效,但为了完整起见,我认为我应该添加这种轻微的变化。它避免循环遍历整个搜索光标,当我对总计数不感兴趣时,只是它大于零。
with arcpy.da.SearchCursor("Table", "Field", "Field = 'Value'") as cursor:
for row in cursor:
break
else:
print "No results returned."