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 einen Aktualisierungs- oder 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 Syntax 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.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]
In Python sind Ausdrücke mit dreifachen Anführungszeichen besser lesbar und verständlicher.
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.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]