1 votos

Cómo borrar todas las filas donde se cumple una cláusula where con arcpy.da.UpdateCursor

Me gustaría utilizar una cláusula where que busque una determinada columna y, si está vacía, elimine la fila.

Mi cláusula SQL where es; SELECT UID2 FROM MY311CONTAINERS_2 WHERE SR_SN_2 <> ' ' AND SR_COLOR_2 <> ' ' AND SR_SIZE_2 <> ' ' AND SR_LOCATION2 <> ' '

Este es mi código:

import arcpy
aContainerFC2 = 'fc'
fields = ("SR_SN_2", "SR_LOCATION_2", "Dist02", "SR_Color_2", "SR_Size_2")
whereClause = fields + " <>  ' ' "
updCurs = arcpy.UpdateCursor(aContainerFC2, whereClause)
for row in updCurs:
    if not row.getValue(field):
        updCurs.deleteRow(row)

Error:

TypeError: can only concatenate tuple (not "str") to tuple

3voto

Flinkman Puntos 4821

Yo utilizaría el poder de la "cláusula wher", asegurándome de que tiene todas las filas que desea eliminar antes de proceder:

qFlt = "SR_SN_2 <> ' ' AND SR_COLOR_2 <> ' ' AND SR_SIZE_2 <> ' ' AND SR_LOCATION2 <> ' '"

with arcpy.da.UpdateCursor(aContainerFC2,where_clause=qFlt) as uCur:
    for dRow in uCur:
        uCur.deleteRow ()

cuando llegues a un objeto fila sabrás que es apto para ser borrado... utilizando la función arcpy.da.ActualizarCursor en un bloque con es preferible porque no necesita del updCurs cuando hayas terminado para liberar los cierres.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X