Mehr

RuntimeError: Zugrunde liegender DBMS-Fehler ORA-00936: fehlender Ausdruck schema.tableName STATE_ID ist keine Spalte in Tabelle?

RuntimeError: Zugrunde liegender DBMS-Fehler ORA-00936: fehlender Ausdruck schema.tableName STATE_ID ist keine Spalte in Tabelle?


Ich habe einen Suchcursor erstellt, um einige Daten aus einer Feature-Class abzurufen.

Das unten gezeigte defekte Beispiel wird erfolgreich in anderen von mir erstellten Skripten verwendet. Der einzige Unterschied, der mir in den Sinn kommt, ist, dass ich in erfolgreichen Fällen Datensätze aus einer Datenbanktabelle und nicht aus einer Feature-Class abrufe.

Der defekte Code wirft einen Fehler in die Zeile,für Zeile in inCursor:. Die Nachricht ist

RuntimeError: Zugrunde liegender DBMS-Fehler [ORA-00936: fehlender Ausdruck] [schema.tableName][STATE_ID = 718361]. 'STATE_ID' ist keine Spalte in meiner Tabelle.

Ich bevorzuge es, explizit eine Liste von Feldern an den Cursor zu senden, da diese Tabelle mehr als 50 Spalten enthält.

Das unten gezeigte Arbeitsbeispiel ist das Ergebnis eines Beitrags, den ich gefunden habe. Ich habe es versucht, um sicherzustellen, dass meine Datenbankverbindung gut war. Der Code druckt Zeilendaten wie erwartet aus.

Was ist falsch an dem defekten Codebeispiel? Irgendwelche Ideen, warum es mit Datenbanktabellen, aber nicht mit Feature-Classes funktioniert? Wie schreibt man einen Cursor besser? Ich bin nicht dagegen, zurückzugehen, um Code mit dem jetzt kaputten Cursor zu überarbeiten.

Dieser Code funktioniert:

Felder = [f.name für f in arcpy.ListFields(inFC)] # Feldlistenfunktionen abrufen = list(cursor_to_dicts(arcpy.SearchCursor(inFC), Felder)) für Feature in Features: print(feature)

Dieser Code funktioniert NICHT:

inputFields = [ "Field1", "Field2", "Field3", "Field4", "Field5", "Field6" ] with arcpy.da.SearchCursor(inFC, inputFields) as inCursor: for row in inCursor: # do stuff

Update #1

Die Feature-Class befindet sich in einer Enterprise-Geodatabase (Oracle). Wir verwenden möglicherweise Versionsverwaltung, aber ich kann es im Moment nicht bestätigen.


Die Fehlermeldung besagt:

STATE_IDist keine Spalte in meiner Tabelle

Versuchen Sie also dieses Code-Snippet, um zu zeigen, ob es dort existiert oder nicht:

import arcpy inFc =  Felder = arcpy.ListFields(inFC) für Feld in Feldern: print field.name

Sie verwenden anscheinend die Geodatabase-Versionsverwaltung, sodass die obigen Angaben möglicherweise nichts ergeben oder nicht. Ich denke, Sie sollten mehr Details in Ihre Frage zum Speicherort dieser Feature-Class aufnehmen.

Um zu erfahren, woher diese Spalte STATE_ID stammt, empfehle ich, die Online-Hilfe für Systemtabellen einer in Oracle gespeicherten Geodatabase zu lesen, da sie:

Die Kennung des Datenbankstatus, auf den diese Version verweist


Viele der in aufgeführten SpaltenEingabefelderin der Datenbanktabelle nicht vorhanden war. Die Dokumentation sagt, dass sie existieren sollten, aber sie tun es nicht.STATE_IDwar keine der fehlenden Spalten und ich bin mir immer noch nicht sicher, worum es ging. Jetzt, da ich die Spaltennamen in aktualisiert habeEingabefelder, alles ist gut.


Schau das Video: Was ist DirectX? - Einfach und schnell erklärt!