Краткая информация
Курсор – это объект доступа к данным, который может использоваться как для итерации набора строк в таблице, так и для вставки новых строк в таблицу. Курсоры могут быть трех форм: поиска, вставки и обновления. Как правило, курсоры используются для считывания и обновления атрибутов.
Прежние версии:
Функции курсора и объект Cursor остается только для использования в старых скриптах. При создании или обновлении скриптов рекомендуется использовать курсоры модуля arcpy.da. Курсоры arcpy.da обеспечивают улучшенную производительность и функциональность, а также поддержку новых типов полей и токенов.
Обзор метода
Метод | Описание |
deleteRow (row) | Удаляет строку в базе данных. Строка, соответствующая текущему положению курсора, будет удалена. |
insertRow (row) | Вставляет новую строку в базу данных. |
newRow () | Создает пустой объект Row. |
next () | Возвращает следующий объект по текущему индексу. |
reset () | Устанавливает текущий индекс перечисления (по методу next) обратно на первый элемент. |
updateRow (row) | Метод updateRow может использоваться для обновления строки в текущем положении курсора обновления. |
Методы
deleteRow (row)
Параметр | Описание | Тип данных |
row | Удаляемая строка. | Row |
insertRow (row)
Параметр | Описание | Тип данных |
row | Вставляемая строка. | Row |
newRow ()
Тип данных | Описание |
Row | Новый пустой объект Row. |
next ()
Тип данных | Описание |
Object | Следующий объект по текущему индексу. |
reset ()
updateRow (row)
Параметр | Описание | Тип данных |
row | Строка используется для обновления текущего положения курсора. | 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
Используйте курсор для изменения значений полей в строках.
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
Используйте курсор вставки для создания строк в таблице.
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