Cursor (arcpy)
Summary
A cursor is a data access object that can be used either to iterate through the set of rows in a table or to insert new rows into a table. Cursors have three forms: search, insert, or update. Cursors are commonly used to read and update attributes.
Method Overview
Method | Explanation |
deleteRow (row) |
Deletes a row in the database. The row corresponding to the current position of the cursor will be deleted. |
insertRow (row) |
Inserts a new row into the database. |
newRow () |
Creates an empty row object. |
next () |
Returns the next object at the current index. |
reset () |
Sets the current enumeration index (used by the next method) back to the first element. |
updateRow (row) |
The updateRow method can be used to update the row at the current position of an update cursor. |
Methods
Parameter | Explanation | Data Type |
row |
The row to be deleted. | Row |
Parameter | Explanation | Data Type |
row |
The row to be inserted. | Row |
Data Type | Explanation |
Object |
The next object at the current index. |
Parameter | Explanation | Data Type |
row |
The row used to update the current position of the cursor. | Row |
Code Sample
Use search cursor to view field values in row.
import arcpy
# Set the workspace
arcpy.env.workspace = "c:/base/data.gdb"
# Create the search cursor
cursor = arcpy.SearchCursor("roads", '"TYPE" <> 4')
# Iterate through the rows in the cursor
for row in cursor:
print("Name: {0}, CFCC code: {1}".format(row.NAME, row.CFCC))
del cursor, row
Use an update cursor to change field values in rows.
import arcpy
# Set the workspace
arcpy.env.workspace = "c:/base/data.gdb"
# Create the update cursor
cursor = arcpy.UpdateCursor("roads")
# Update the road buffer distance field based on road type.
# Road type is either 1,2,3,4 Distance is in meters.
for row in cursor:
row.setValue("BUFFER_DIST", row.getValue("TYPE") * 100)
cursor.updateRow(row)
# Delete cursor and row objects
del cursor, row
Use an insert cursor to create new rows in table.
import datetime
import arcpy
# Create insert cursor for table
cursor = arcpy.InsertCursor("c:/base/data.gdb/roads_maint")
# Create 25 new rows. Set default values on distance and CFCC code
for i in xrange(1000, 1025):
row = cursor.newRow()
row.setValue('rowid', i)
row.setValue('distance', 100)
row.setValue('CFCC', 'A10')
row.setValue('LastInsp', datetime.datetime.now())
cursor.insertRow(row)
# Delete cursor and row objects
del cursor, row