IndexError: tuple index out of range
Verfasst: Donnerstag 24. März 2016, 19:02
Hallo zusammen,
Ich verarbeite eine Datenmenge, die aus einer Abfrage an einen anderen Server stammt und in JSON Format geliefert wird.
Hierbei filtere ich mir meine benötigten Daten heraus und lege mir diese in eine Variable. Den Wert der Variable möchte ich nun per Insert in eine PostgreSQL Datenbank per psycpg2 schreiben.
# Füllen der Variablen zur Zusammenfassung für die Übertragung zur Datenbank
i = 0
for item in m:
print('Kontrollpunkt' ,i)
osp_meters_project_id = m['project_id']
osp_meters_audit_timestamp = m['timestamp']
#for Item in m['resource_metadata']:
osp_meters_audit_period_beginning = m['resource_metadata']['audit_period_beginning']
osp_meters_audit_period_ending = m['resource_metadata']['audit_period_ending']
osp_meters_created_at = m['resource_metadata']['created_at']
if m['resource_metadata']['deleted_at']== '':
print('Kontrollpunkt empty')
osp_meters_deleted_at = m['timestamp']
else:
print('Kontrollpunkt Not empty')
osp_meters_deleted_at = m['resource_metadata']['deleted_at']
osp_meters_ephemeral_gb = m['resource_metadata']['ephemeral_gb']
osp_meters_root_gb = m[i]['resource_metadata']['root_gb']
Invoice_calculated = int(osp_meters_ephemeral_gb) + int(osp_meters_root_gb)
osp_meters_invoice_disk_gb = Invoice_calculated
osp_meters_display_name = m[i]['resource_metadata']['display_name']
osp_meters_instance_id = m[i]['resource_metadata']['instance_id']
osp_meters_instance_type = m[i]['resource_metadata']['instance_type']
osp_meters_instance_type_id = m[i]['resource_metadata']['instance_type_id']
osp_meters_memory_mb = m[i]['resource_metadata']['memory_mb']
osp_meters_state = m[i]['resource_metadata']['state']
osp_meters_tenant_id = m[i]['resource_metadata']['tenant_id']
osp_meters_vcpus = m[i]['resource_metadata']['vcpus']
print(osp_meters_project_id)
print(osp_meters_audit_period_beginning)
print(osp_meters_audit_period_ending)
print(osp_meters_created_at)
print(osp_meters_deleted_at)
print(osp_meters_ephemeral_gb)
print(osp_meters_root_gb)
print(osp_meters_invoice_disk_gb)
print( osp_meters_display_name)
print(osp_meters_instance_id)
print(osp_meters_instance_type)
print(osp_meters_instance_type_id)
print(osp_meters_memory_mb)
print(osp_meters_state)
print(osp_meters_tenant_id)
print(osp_meters_vcpus)
print(osp_meters_audit_timestamp)
try:
cur.execute("""INSERT INTO osp_meters (project_id, audit_period_beginning, audit_period_ending, created_at, deleted_at, display_name, invoice_disc_gb, root_gb, ephemeral_gb, memory_mb, vcpus, instance_id,instance_type, instance_type_id,tenant_id, audit_timestamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",(osp_meters_project_id,osp_meters_audit_period_beginning, osp_meters_audit_period_ending,osp_meters_created_at,osp_meters_deleted_at,osp_meters_display_name,osp_meters_invoice_disk_gb,osp_meters_root_gb, osp_meters_ephemeral_gb, osp_meters_memory_mb,osp_meters_vcpus, osp_meters_state,osp_meters_instance_id, osp_meters_instance_type,osp_meters_instance_type_id,osp_meters_audit_timestamp))
except psycopg2.IntegrityError:
print("oouups")
else:
print("alles ok")
i= i + 1
conn.commit()
Wenn ich mir die Veariablen per print ausgeben lasse, so sieht alles ok aus, der Insert jedoch Fällt mit folgender Meldung auf die Nase:
Traceback (most recent call last):
File "/home/akquinet/Dokumente/extract meters aus Liste.py", line 1011, in <module>
cur.execute("""INSERT INTO osp_meters (project_id, audit_period_beginning, audit_period_ending, created_at, deleted_at, display_name, invoice_disc_gb, root_gb, ephemeral_gb, memory_mb, vcpus, instance_id,instance_type, instance_type_id,tenant_id, audit_timestamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",(osp_meters_project_id,osp_meters_audit_period_beginning, osp_meters_audit_period_ending,osp_meters_created_at,osp_meters_deleted_at,osp_meters_display_name,osp_meters_invoice_disk_gb,osp_meters_root_gb, osp_meters_ephemeral_gb, osp_meters_memory_mb,osp_meters_vcpus, osp_meters_state,osp_meters_instance_id, osp_meters_instance_type,osp_meters_instance_type_id,osp_meters_audit_timestamp))
IndexError: tuple index out of range
Woran kann das noch liegen?
Ich verarbeite eine Datenmenge, die aus einer Abfrage an einen anderen Server stammt und in JSON Format geliefert wird.
Hierbei filtere ich mir meine benötigten Daten heraus und lege mir diese in eine Variable. Den Wert der Variable möchte ich nun per Insert in eine PostgreSQL Datenbank per psycpg2 schreiben.
# Füllen der Variablen zur Zusammenfassung für die Übertragung zur Datenbank
i = 0
for item in m:
print('Kontrollpunkt' ,i)
osp_meters_project_id = m['project_id']
osp_meters_audit_timestamp = m['timestamp']
#for Item in m['resource_metadata']:
osp_meters_audit_period_beginning = m['resource_metadata']['audit_period_beginning']
osp_meters_audit_period_ending = m['resource_metadata']['audit_period_ending']
osp_meters_created_at = m['resource_metadata']['created_at']
if m['resource_metadata']['deleted_at']== '':
print('Kontrollpunkt empty')
osp_meters_deleted_at = m['timestamp']
else:
print('Kontrollpunkt Not empty')
osp_meters_deleted_at = m['resource_metadata']['deleted_at']
osp_meters_ephemeral_gb = m['resource_metadata']['ephemeral_gb']
osp_meters_root_gb = m[i]['resource_metadata']['root_gb']
Invoice_calculated = int(osp_meters_ephemeral_gb) + int(osp_meters_root_gb)
osp_meters_invoice_disk_gb = Invoice_calculated
osp_meters_display_name = m[i]['resource_metadata']['display_name']
osp_meters_instance_id = m[i]['resource_metadata']['instance_id']
osp_meters_instance_type = m[i]['resource_metadata']['instance_type']
osp_meters_instance_type_id = m[i]['resource_metadata']['instance_type_id']
osp_meters_memory_mb = m[i]['resource_metadata']['memory_mb']
osp_meters_state = m[i]['resource_metadata']['state']
osp_meters_tenant_id = m[i]['resource_metadata']['tenant_id']
osp_meters_vcpus = m[i]['resource_metadata']['vcpus']
print(osp_meters_project_id)
print(osp_meters_audit_period_beginning)
print(osp_meters_audit_period_ending)
print(osp_meters_created_at)
print(osp_meters_deleted_at)
print(osp_meters_ephemeral_gb)
print(osp_meters_root_gb)
print(osp_meters_invoice_disk_gb)
print( osp_meters_display_name)
print(osp_meters_instance_id)
print(osp_meters_instance_type)
print(osp_meters_instance_type_id)
print(osp_meters_memory_mb)
print(osp_meters_state)
print(osp_meters_tenant_id)
print(osp_meters_vcpus)
print(osp_meters_audit_timestamp)
try:
cur.execute("""INSERT INTO osp_meters (project_id, audit_period_beginning, audit_period_ending, created_at, deleted_at, display_name, invoice_disc_gb, root_gb, ephemeral_gb, memory_mb, vcpus, instance_id,instance_type, instance_type_id,tenant_id, audit_timestamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",(osp_meters_project_id,osp_meters_audit_period_beginning, osp_meters_audit_period_ending,osp_meters_created_at,osp_meters_deleted_at,osp_meters_display_name,osp_meters_invoice_disk_gb,osp_meters_root_gb, osp_meters_ephemeral_gb, osp_meters_memory_mb,osp_meters_vcpus, osp_meters_state,osp_meters_instance_id, osp_meters_instance_type,osp_meters_instance_type_id,osp_meters_audit_timestamp))
except psycopg2.IntegrityError:
print("oouups")
else:
print("alles ok")
i= i + 1
conn.commit()
Wenn ich mir die Veariablen per print ausgeben lasse, so sieht alles ok aus, der Insert jedoch Fällt mit folgender Meldung auf die Nase:
Traceback (most recent call last):
File "/home/akquinet/Dokumente/extract meters aus Liste.py", line 1011, in <module>
cur.execute("""INSERT INTO osp_meters (project_id, audit_period_beginning, audit_period_ending, created_at, deleted_at, display_name, invoice_disc_gb, root_gb, ephemeral_gb, memory_mb, vcpus, instance_id,instance_type, instance_type_id,tenant_id, audit_timestamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",(osp_meters_project_id,osp_meters_audit_period_beginning, osp_meters_audit_period_ending,osp_meters_created_at,osp_meters_deleted_at,osp_meters_display_name,osp_meters_invoice_disk_gb,osp_meters_root_gb, osp_meters_ephemeral_gb, osp_meters_memory_mb,osp_meters_vcpus, osp_meters_state,osp_meters_instance_id, osp_meters_instance_type,osp_meters_instance_type_id,osp_meters_audit_timestamp))
IndexError: tuple index out of range
Woran kann das noch liegen?