Ich möchte Daten von einer Tabelle in eine andere verschieben, wobei dazwischen eine Verarbeitung stattfindet. Die Daten sind ein großes Json-Objekt an der Quelle, so dass ich versuche, einzelne Werte auszublenden, um die Daten auszuwählen. Ich übergebe die Daten Zeile für Zeile in die folgende Funktion.Zugriff auf verschachtelte Werte
def transformBadges(row):
for inner_row in row:
for element in inner_row :
id = element['id']
archived = element['archived']
type = element['type']
name = element['name']
badge_id = str(uuid.uuid4())
insertBadge(id, archived, type, name, badge_id)
row
enthält meine Zielspalte, im Wesentlichen. Allerdings habe ich meine Auswahl aktualisiert, um ein paar weitere Spalten auszuwählen. Aus diesem Grunde hatte ich den obigen Code auf die unten zu ändern:
def transformBadges(row):
badges = row['badges']
for inner_row in badges:
for element in inner_row:
id = element['id']
archived = element['archived']
type = element['type']
name = element['name']
badge_id = str(uuid.uuid4())
insertBadge(id, archived, type, name, badge_id)
In meinem Kopf, dann ist es genau die gleiche - nur jetzt mit den in einer anderen Variablen gespeicherten Daten. Allerdings bekomme ich diesen Fehler:
Traceback (most recent call last):
File "etl/main.py", line 537, in <module>
main()
File "etl/main.py", line 99, in main
transformBadges(row)
File "etl/main.py", line 106, in transformBadges
id = element['id']
TypeError: string indices must be integers
Warum sollte die erste Arbeit, aber nicht die zweite?
Aha ist, macht Sinn! Wird nach Ablauf des Zeitlimits akzeptiert – Someguywhocodes