1 votos

Expresión SQL correcta para la herramienta SelectbyAttribute

Estoy tratando de aplicar la expresión sql descrita aquí https://geonet.esri.com/thread/76028 que consiste en consultar los valores de impar en un campo. La expresión sql específica es Round(NumberField / 2, 0) <> NumberField / 2 .

He escrito esto en python:

import arcpy

plantFile = r"U:\Users\K\Plants.shp"
field = "UID"

expression = Round("UID" / 2, 0) <> "UID" / 2
arcpy.SelectLayerByAttribute_management(plantFile, "NEW_SELECTION", expression)

y devuelve este error: NameError: el nombre 'Round' no está definido

La expresión funciona cuando se aplica en ArcGIS, pero no en arcpy. ¿Alguna pista?

1voto

UnkwnTech Puntos 21942

Python distingue entre mayúsculas y minúsculas, por lo que el primer error que ves se debe a que el intérprete de Python ve Round y tratar de encontrar una función con ese nombre.

Para ver que reconoce round pero no Round Inténtalo:

Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> Round

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    Round
NameError: name 'Round' is not defined
>>> round
<built-in function round>
>>>

Sin embargo, en realidad es necesario poner comillas simples (') o triples (''') a su expression para poder pasarla a SelectByAttributes como una expresión SQL.

Allí el intérprete de SQL no se preocuparía por el caso del Round como ha destacado @Vince en su comentario.

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