Cursor (arcpy)
Резюме
Курсор – это объект доступа к данным, который может использоваться как для итерации по набору строк в таблице, так и для вставки новых строк в таблицу. Курсоры могут быть трех форм: поиска, вставки или обновления. Как правило, курсоры используются для считывания и обновления атрибутов.
Обзор метода
Метод | Объяснение |
deleteRow (row) |
Удаляет строку в базе данных. Строка, соответствующая текущему положению курсора, будет удалена. |
insertRow (row) |
Вставляет новую строку в базу данных. |
newRow () |
Создает пустой строковый объект. |
next () |
Возвращает следующий объект по текущему индексу. |
reset () |
Устанавливает текущий индекс перечисления (по методу next) обратно на первый элемент. |
updateRow (row) |
Метод updateRow может использоваться для обновления строки в текущем положении курсора обновления. |
Методы
Параметр | Объяснение | Тип данных |
row |
Удаляемая строка. | Row |
Параметр | Объяснение | Тип данных |
row |
Вставляемая строка. | Row |
Тип данных | Объяснение |
Object |
Следующий объект по текущему индексу. |
Параметр | Объяснение | Тип данных |
row |
Строка используется для обновления текущего положения курсора. | Row |
Пример кода
Использование курсора поиска для просмотра значений полей в строке.
import arcpy
from arcpy import env
# Set the workspace
#
env.workspace = "D:/St_Johns/data.gdb"
# Create the search cursor
#
cur = arcpy.SearchCursor("roads", '"TYPE" <> 4')
# Iterate through the rows in the cursor
#
for row in cur:
print "Name: %s, CFCC code: %s" % (row.NAME, row.CFCC)
del cur, row
Использование курсора обновления для изменения значений полей в строке.
import arcpy
from arcpy import env
# Set the workspace
#
env.workspace = "D:/St_Johns/data.gdb"
# Create the update cursor
#
cur = 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 cur:
row.BUFFER_DIST = row.TYPE * 100
cur.updateRow(row)
# Delete cursor and row objects
#
del cur, row
Использование курсора вставки для создания новых строк в таблице.
import arcpy
import time
# Create insert cursor for table
#
cur = arcpy.InsertCursor("D:/St_Johns/data.gdb/roads_maint")
x = 1000
# Create 25 new rows. Set default values on distance and CFCC code
#
while x <= 1025:
row = cur.newRow()
row.rowid = x
row.distance = 100
row.CFCC = "A10"
row.LastInsp = time.ctime()
cur.insertRow(row)
x += 1
# Delete cursor and row objects
#
del cur, row