arcpy SearchCursor,SQL语句无效

时间:2013-04-09 19:21:00

标签: python sql cursor max arcpy

我正在尝试从3列中选择值的最大值(和单独的代码块中的min,未显示)。我试图在用搜索光标看到的一些工作代码之后对我的代码进行建模。

我需要能够访问稍后写入文件的最大值。

问题是我在搜索光标中的SQL表达式。我尝试了大约5种我能想到的变化,但它们都不会运行。我对SQL表达式了解不多,但我通常至少可以在ArcMap GUI中使用它们。在python脚本中,它就像在黑暗中找到一条蛇。

这是我的代码:

    #input shapefile
inputFC = 'C:whatever.shp'

#variable to define the field names
fields = ['Crude_R1', 'Crude_R2', 'Crude_R3', 'STATE_NAME', 'Age_Adj_R1', 'Age_Adj_R2', 'Age_Adj_R3']

CRmax = 0

cursor = arcpy.da.SearchCursor(inputFC, fields[0:2], 'MAX "Crude_R1" AND "Crude_R2" AND "Crude_R3"')
for row in cursor:
    print row[0:2]
CRmax = row[0:2]
del row
del cursor

错误消息:

Traceback (most recent call last):
File "C:\whatever.py", line 64, in <module>
for row in cursor:
RuntimeError: An invalid SQL statement was used.

2 个答案:

答案 0 :(得分:0)

我不确定你要用SQL做什么。如果您需要有关该语句的帮助,请添加您的数据模式以及您要完成的更详细的描述。如果您不熟悉python和arcpy,那么您可能希望使用GUI界面来使SQL工作,然后将其复制到python脚本中。

答案 1 :(得分:0)

多次使用“AND”,例如:

'MAX "Crude_R1" AND "Crude_R2" AND "Crude_R3"'

每个'AND'后需要包含'MAX':

'MAX "Crude_R1" AND MAX "Crude_R2" AND MAX "Crude_R3"' 

注意:可能需要使用引号进行其他格式化,但这是它的要点。 另外,如果需要,请尝试使用“OR”而不是“AND”。

其次,由于您指定了所有三个字段的MAX组合,因此您需要先创建一个新字段,然后将该字段计算为:

"!Crude_R1! + !Crude_R2 + !Crude_R2!"

然后你可以做一个简单的SQL语句:

'MAX "New_Field"'