使用 Python 指定查询

结构化查询语言 (SQL) 是一种功能强大的语言,可定义一个或多个由属性、运算符和计算组成的判定条件。例如,假设有一份客户数据表,要在其中查找去年花费超过 $50,000 且业务类型是餐馆的客户。则可以使用以下表达式选择客户:“Sales > 50000 AND Business_type = 'Restaurant'”。

当为更新搜索游标指定一个查询时,仅返回满足该查询的记录。一个 SQL 查询代表了一个使用 SQL SELECT 语句对 SQL 数据库中的表进行的单个表查询的一个子集。用于指定 WHERE 子句的语法与保存数据的基础数据库的语法相同。

下例将过滤搜索游标的行以得到仅属于特定道路类的道路:

import arcpy

fc = "D:/St_Johns/data.gdb/roads"

# Create a search cursor using an SQL expression
#
c = arcpy.da.SearchCursor(fc, ("roadclass", "name"), """"roadclass" = 2""")
for row in c:
    # Print the name of the residential road
    #
    print row[1]
提示提示:

在 Python 中,构建由三重引号括起的表达式在读取和理解时都更加容易。

使用带 SQL 表达式的 AddFieldDelimiters

SQL 表达式中使用的字段分隔符因所查询数据的格式而异。例如,文件地理数据库和 shapefile 使用双引号 (" "),个人地理数据库使用方括号 ([ ]),而 ArcSDE 地理数据库不使用字段分隔符。AddFieldDelimiters 函数可免去一些为确保与 SQL 表达式一起使用的字段分隔符的正确性而进行的推测过程。下例对上述示例进行了扩展,以为 SQL 表达式添加正确的字段分隔符。

import arcpy

fc = "D:/St_Johns/data.gdb/roads"
fieldname = "roadclass"

# Create field name with the proper delimiters
#
whereclause = """%s = 2""" % arcpy.AddFieldDelimiters(fc, fieldname)

# Create a search cursor using an SQL expression
#
c = arcpy.da.SearchCursor(fc, ("roadclass", "name"), whereclause)

for row in c:
    # Print the name of the residential road
    print row[1]

相关主题

9/15/2013