En el código de Python dentro de una Calculate Value
herramienta en mi modelo, tengo lo siguiente:
getNum("%Selected Features%")
def getNum(ftr):
lst = [4, 11, 15] #values for SQL expression
x = 20
fields = ('TYPE_A', 'TYPE_B', 'NUM_ID')
for l in lst:
y = x + 1
whereclause = """"NUM_ID" = %s """ % l
with arcpy.da.UpdateCursor(ftr, fields, whereclause) as cursor:
for row in cursor:
if row[0] ! = row[1]:
row[2] = y
cursor.updateRow(row)
y += 1
Lo que me gustaría hacer es, para cada elemento de la lst
, crear un cursor basado en una selección de registros donde NUM_ID = l
. Los valores en TYPE_A
y TYPE_B
deben ser comparados para cada registro y actualiza si es necesario.
El guión está fallando después de que el cursor se crea, con el error Item not in collection
. Si puedo quitar el whereclause
, que se ejecuta. Una vez que los registros han sido seleccionados y los valores de comparación y se actualiza si es necesario, tengo que incrementar el contador y
por 1. Creo que me estoy haciendo en el lugar equivocado, porque si ejecuto el script sin la whereclause
no se ejecutarán correctamente.Cuando reviso los registros con los valores cambiados, ahora están todos a y
, lo que indica que y
fue no se incrementa.