Uno o ambos de sus campos en srvMatFld
y serviceID
no existen. Podría ser un error tipográfico en sus parámetros.
Aquí está mi script de prueba basado en tu código (sólo he añadido algunas sentencias print extra para que las cosas destaquen:
import arcpy
print "######################################################"
xx = r"d:\gis\se\gisse.gdb\testpoint"
srvMatFld = 'intfield'
serviceID = 'dblfield'
listFields = [f.name for f in arcpy.ListFields(xx)]
print listFields
print "######################################################"
for field in [srvMatFld, serviceID]:
if field not in listFields:
print field
print "######################################################"
with arcpy.da.SearchCursor(xx, [srvMatFld, serviceID]) as cursor:
for x, y in cursor:
print x, y
print "######################################################"
with arcpy.da.SearchCursor(xx, [srvMatFld, serviceID]) as cursor:
for row in cursor:
print row[0], row[1]
Y la salida:
######################################################
[u'OBJECTID', u'SHAPE', u'textfield', u'intfield', u'dblfield', u'datefield', u'SampleText', u'leisure', u'Greenspace', u'Name', u'Description', u'BigNumbers', u'TestVBA', u'MyDblField', u'MyIncrementField']
######################################################
######################################################
123 23.56
5454 -12234.2341
68465 None
5151 None
None None
######################################################
123 23.56
5454 -12234.2341
68465 None
5151 None
None None
>>>
Sin embargo, si introduzco un error tipográfico en uno de mis dos nombres de campo (en este caso srvMatFld = 'intfieldx'
) entonces obtengo el error que usted encuentra:
######################################################
[u'OBJECTID', u'SHAPE', u'textfield', u'intfield', u'dblfield', u'datefield', u'SampleText', u'leisure', u'Greenspace', u'Name', u'Description', u'BigNumbers', u'TestVBA', u'MyDblField', u'MyIncrementField']
######################################################
intfieldx
######################################################
Traceback (most recent call last):
File "D:\GIS\VSProjects\GISTest\GISSE\GISSE\xScratch.py", line 42, in <module>
for x, y in cursor:
RuntimeError: A column was specified that does not exist.
>>>
Observe el nombre incorrecto del campo intfieldx
se especifica a partir del if field not in listFields: print field
esta vez.
Su bucle de cursor es un poco ortodoxo - por lo general, el bucle a través de algo como for row in cursor:
, pero si los campos existen, la forma en que lo has escrito debe todavía funcionan.
with arcpy.da.SearchCursor(xx, [srvMatFld, serviceID]) as cursor:
for row in cursor:
print row[0], row[1]