Определение запроса в Python

Язык структурированных запросов (SQL) является мощным языком, который используется для определения одного и более критериев, которые состоят из атрибутов, операторов и вычислений. Например, представьте, что у вас есть таблица с данными о клиентах, и вы хотите найти тех, кто потратил более 50 000 долларов за последний год и владеет ресторанным бизнесом. Клиентов можно выбрать с помощью такого выражения: "Sales > 50000 AND Business_type = 'Restaurant'".

Если запрос выбран для обновления или поискового курсора, будут возвращены только записи, соответствующие этому запросу. Запрос SQL представляет собой поднабор запросов одной таблицы, который можно выполнить в таблице базы данных SQL, использовав утверждение SQL SELECT. Синтаксис, используемый для определения выражения "Где (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 построения выражений, выделенные тройными кавычками, легче прочитать и понять.

Использование AddFieldDelimiters в выражении SQL

Ограничители поля в выражении SQL отличаются в зависимости от формата запрашиваемых данных. Например, в базах геоданных и шейп-файлах используются двойные кавычки (" "), в персональных базах геоданных используются квадратные скобки ([ ]), а в базах геоданных 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/11/2013