Python でのクエリの指定

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

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

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

import arcpy

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

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

SQL 式での AddFieldDelimiters の使用

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

import arcpy

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

# Create field name with the proper delimiters
#
delimitedfield = arcpy.AddFieldDelimiters(fc, fieldname)

# Create a search cursor using an SQL expression
#
rows = arcpy.SearchCursor(fc, delimitedfield + " = 2")

for row in rows:
    # Print the name of the residential road
    print row.name

関連項目


7/10/2012