Festlegen einer Abfrage in Python

Structured Query Language (SQL) ist eine leistungsfähige Sprache, die zur Festlegung eines oder mehrerer Kriterien verwendet wird. Diese Kriterien bestehen aus Attributen, Operatoren und Berechnungen. Angenommen, Sie verfügen über eine Tabelle mit Kundendaten und möchten die Kunden ermitteln, die im letzten Jahr mehr als 50.000 EUR ausgegeben haben und deren Geschäftstyp "Restaurant" ist. Dazu wählen Sie die Kunden mit folgendem Ausdruck aus: "Sales > 50000 AND Business_type = 'Restaurant'".

Wenn eine Abfrage für eine Aktualisierungs- oder einen Such-Cursor angegeben wird, werden nur die Datensätze zurückgegeben, die die Abfragekriterien erfüllen. Eine SQL-Abfrage stellt einen Teil der einzelnen Tabellenabfragen dar, die mit einer SQL SELECT-Anweisung in einer SQL-Datenbank in einer Tabelle vorgenommen werden können. Die Syntax für die WHERE-Klausel entspricht der der zugrunde liegenden Datenbank, in der sich die Daten befinden.

Im folgenden Beispiel werden die Zeilen eines Such-Cursors so gefiltert, dass nur Straßen einer bestimmten Klasse zurückgegeben werden:

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

Verwenden von "AddFieldDelimiters" mit dem SQL-Ausdruck

Die in einem SQL-Ausdruck verwendeten Feldtrennzeichen unterscheiden sich je nach Format der abgefragten Daten. File-Geodatabases und Shapefiles verwenden beispielsweise Anführungszeichen (" "), Personal-Geodatabases eckige Klammern ([ ]) und ArcSDE-Geodatabases verwenden keine Feldtrennzeichen. Mit der AddFieldDelimiters-Funktion können Sie sicher sein, dass für einen SQL-Ausdruck die richtigen Feldtrennzeichen verwendet werden. Die folgenden Beispiele bauen auf dem obigen Beispiel auf und fügen dem SQL-Ausdruck die richtigen Feldtrennzeichen hinzu.

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

Verwandte Themen


7/10/2012