Python でのクエリの指定

構造化クエリ言語 (SQL) は、属性、演算子、計算からなる 1 つ以上の基準を定義するための強力な言語です。たとえば、顧客データのテーブルがあり、去年 50,000 ドル以上の買い物をし、職業がレストラン経営に分類される顧客を検索したいとします。この場合には、次の式で顧客を選択することができます。"Sales > 50000 AND Business_type = 'Restaurant'"

Update カーソルまたは Search カーソルに対してクエリを指定すると、そのクエリの条件を満たすレコードのみが返されます。SQL クエリは、SQL SELECT ステートメントを使って SQL データベース内のテーブルに対して実行できる、単一テーブル クエリのサブセットを表します。WHERE 句を指定するための構文は、データを保持している基礎のデータベースの構文と同じです。

次の例では、Search カーソルの行をフィルターに掛けて、特定の道路クラスの道路のみに対象を絞り込みます。

import arcpy

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

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

Python では、三重引用符で囲んで式を作成すると、読みやすく、かつ理解しやすくなります。

SQL 式での AddFieldDelimiters の使用

SQL 式で使用されるフィールド区切り文字は、クエリ対象のデータのフォーマットによって異なります。たとえば、ファイル ジオデータベースとシェープファイルは二重引用符 (" ") を使用し、パーソナル ジオデータベースは大括弧 ([ ]) を使用します。ArcSDE ジオデータベースはフィールド区切り文字を使用しません。AddFieldDelimiters 関数を使用すれば、どのフィールド区切り文字を使用するか推測で決める必要がなく、SQL 式で確実に正しい区切り文字が使用されるようになります。次の例では、前記の例を基にして、SQL 式に正しいフィールド区切り文字を追加しています。

import arcpy

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

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

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

for row in cursor:
    # Print the name of the residential road
    print(row[1])

このトピックの内容
  1. SQL 式での AddFieldDelimiters の使用