Python 带数据验证的ArcPY插入光标或';删除重复项';功能类型

Python 带数据验证的ArcPY插入光标或';删除重复项';功能类型,python,arcpy,Python,Arcpy,我希望使用ArcPy构建一个脚本/GP工具,允许用户提交一个表以加载到现有要素类中(本质上是一种追加/插入类型的操作。但是,我希望先“审阅”表中的重复项:在这种情况下,重复项由几个字段串联定义,以创建唯一ID 在这里进行初步搜索时,这是非常接近的: 目标可能是SQL表,但建议的解决方案都涉及SQL中的查询。我的解决方案需要基于web,并且我最熟悉Python。有没有办法通过ArcPy/Python公开上面链接中建议的底层DB查询/约束/索引?这个问题有点含糊不清。您需要我们认为向要素类中添加表

我希望使用ArcPy构建一个脚本/GP工具,允许用户提交一个表以加载到现有要素类中(本质上是一种追加/插入类型的操作。但是,我希望先“审阅”表中的重复项:在这种情况下,重复项由几个字段串联定义,以创建唯一ID

在这里进行初步搜索时,这是非常接近的:


目标可能是SQL表,但建议的解决方案都涉及SQL中的查询。我的解决方案需要基于web,并且我最熟悉Python。有没有办法通过ArcPy/Python公开上面链接中建议的底层DB查询/约束/索引?

这个问题有点含糊不清。您需要我们认为向要素类中添加表格数据是有意义的,但是有很多方法可以实现这一点。我假设您使用的是10.x ArcGIS(即arcpy,而不是gp)

你可以用

arcpy.Frequency_analysis(in_table, out_table, frequency_fields;frequency_fields..., {summary_fields;summary_fields...})
然后查看是否有频率超过1的记录,可以使用以下方法:

arcpy.MakeTableView_management(out_table, 'out_tableTV', '"FREQUENCY" > 1')
numEvents=int(arcpy.GetCount_management('out_tableTV'))
if numEvents > 0:
    print 'duplicates'
或者,您可以将值提取到python列表对象,从中创建一个集合(消除重复),然后比较列表和集合对象

>>> x=[1,2,1]
>>> type(x)
<type 'list'>
>>> y=set(x)
>>> type(y)
<type 'set'>
>>> y
set([1, 2])
>>> if x!=y:
...     print 'duplicates exist'
...     
duplicates exist
>x=[1,2,1]
>>>类型(x)
>>>y=设定值(x)
>>>类型(y)
>>>y
集合([1,2])
>>>如果x!=y:
…打印“存在重复项”
...     
存在重复项