In addition to being used to edit rows in a table or feature class, UpdateCursor
can also be used to delete rows. Keep in mind that when rows are deleted outside an edit session, the changes are permanent.
In addition to updating records, UpdateCursor
can also delete records from a table or feature class. The UpdateCursor
object is created in the same way in either case, but instead of calling updateRow()
, you call deleteRow()
to delete a record. You can also apply a where
clause to UpdateCursor
, to limit the records returned. In this recipe, we'll use an UpdateCursor
object that has been filtered using a where
clause to delete records from our FireIncidents
feature class.
Follow these steps to create an UpdateCursor
object that will be used to delete rows from a feature class:
C:ArcpyBookCh8DeleteWildfires.py
.arcpy
and os
modules:import arcpy import os
arcpy.env.workspace = "C:/ArcpyBook/Ch8/WildfireData/WildlandFires.mdb"
try
block:try:
UpdateCursor
inside a with
block. Make sure you indent inside the try
statement:with arcpy.da.UpdateCursor("FireIncidents",("CONFID_RATING"), '[CONFID_RATING] = 'POOR'') as cursor:
with
block:cntr = 1
deleteRow()
method. This is done by looping through the returned cursor and deleting the rows one at a time:for row in cursor: cursor.deleteRow() print("Record number " + str(cntr) + " deleted") cntr = cntr + 1
except
block to print any errors that may occur:except Exception as e: print(e.message)
import arcpy import os arcpy.env.workspace = "C:/ArcpyBook/Ch8/WildfireData/WildlandFires.mdb" try: with arcpy.da.UpdateCursor("FireIncidents",("CONFID_RATING"), '[CONFID_RATING] = 'POOR'') as cursor: cntr = 1 for row in cursor: cursor.deleteRow() print("Record number " + str(cntr) + " deleted") cntr = cntr + 1 except Exception as e: print(e.message)
C:ArcpyBookcodeCh8DeleteWildfires.py
solution file.FireIncidents
feature class:Record number 1 deleted Record number 2 deleted Record number 3 deleted Record number 4 deleted Record number 5 deleted
Rows from feature classes and tables can be deleted using the deleteRow()
method in UpdateCursor
. In this recipe, we used a where
clause in the constructor of UpdateCursor
to limit the records returned to only features that included CONFID_RATING
of POOR
. We then looped through the features returned in the cursor and called the deleteRow()
method to delete the row from the feature class.