サマリー
A cursor is a data access object that can be used 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.
レガシー:
The cursor functions and Cursor object only remain for use in legacy scripts. When authoring or updating scripts, it is recommended that you use the cursors in the arcpy.da module. The arcpy.da cursors provide improved performance and functionality, and support for newer field types and tokens.
方法の概要
方法 | 説明 |
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. |
方法
deleteRow (row)
パラメーター | 説明 | データ タイプ |
row | The row to be deleted. | Row |
insertRow (row)
パラメーター | 説明 | データ タイプ |
row | The row to be inserted. | Row |
newRow ()
データ タイプ | 説明 |
Row | A new empty Row object. |
next ()
データ タイプ | 説明 |
Object | The next object at the current index. |
reset ()
updateRow (row)
パラメーター | 説明 | データ タイプ |
row | The row used to update the current position of the cursor. | Row |
コードのサンプル
Use a search cursor to view field values in rows.
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 rows in a 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 range(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