import arcpy fc = arcpy.GetParameterAsText(0) field = arcpy.GetParameterAsText(1) value = arcpy.GetParameterAsText(2) query = "{} = '{}'".format(arcpy.AddFieldDelimiters(fc, field), value.replace("'", "''")) with arcpy.da.UpdateCursor(fc, ["OID@", field], where_clause=query) as cursor: for row in cursor: cursor.deleteRow() arcpy.AddMessage("Deleted OID {} with {} = {}".format(row[0], field, value))运行错误:Traceback (most recent call last): File "D:\多对一空间连接\批量删除小面积.py", line 10, in <module> RuntimeError: 使用了无效的 SQL 语句。 [大面大面] 执行(删除小面)失败。请改正代码
时间: 2023-12-22 15:02:41 浏览: 27
这个错误提示说 SQL 语句无效,可能是因为 `query` 变量中的 SQL 语句有问题。可以尝试在代码中添加一些调试语句,输出 `query` 的值,看看是否符合预期。
另外,可能还需要检查一下输入参数是否正确,例如第一个参数 `fc` 是否为有效的要素类名称。以下是修改后的代码示例:
```python
import arcpy
fc = arcpy.GetParameterAsText(0)
field = arcpy.GetParameterAsText(1)
value = arcpy.GetParameterAsText(2)
# 输出参数值,以便调试
arcpy.AddMessage("fc = {}, field = {}, value = {}".format(fc, field, value))
# 构造查询语句
query = "{} = '{}'".format(arcpy.AddFieldDelimiters(fc, field), value.replace("'", "''"))
arcpy.AddMessage("query = {}".format(query))
# 使用游标删除满足条件的记录
with arcpy.da.UpdateCursor(fc, ["OID@", field], where_clause=query) as cursor:
for row in cursor:
cursor.deleteRow()
arcpy.AddMessage("Deleted OID {} with {} = {}".format(row[0], field, value))
```
运行修改后的代码,如果有错误提示可以查看输出信息,找出问题所在,并进行修正。