ich habe ein Problem. ich versuche eine Tabelle up-zu-date-ten. Dafür lese ich erst die Tabellendaten/Attribute ein im Form von einer Liste aus Tupeln:
[('01', 'Key_ADA', '1', 'NOT NULL', 'varchar', 7), ('02', 'Firmenname', '0', 'NOT NULL', 'varchar', 82), ('03', 'Hausnr_von', '0', ' ', 'varchar', 6), ('04', 'Hausnr_von_Zusatz', '0', ' ', 'varchar', 6), ('05', 'Hausnr_bis', '0', ' ', 'varchar', 6), ('06', 'Hausnr_bis_Zusatz', '0', ' ', 'varchar', 6), ('07', 'Land', '0', 'NOT NULL', 'varchar', 5), ('08', 'Ort_Zustellung', '0', ' ', 'varchar', 42), ('09', 'Ort_Postfach', '0', ' ', 'varchar', 42), ('10', 'Postfach', '0', ' ', 'varchar', 12), ('11', 'PLZ_Zustellung', '0', ' ', 'varchar', 12), ('12', 'PLZ_Postfach', '0', ' ', 'varchar', 12), ('13', 'PLZ_Grosskunde', '0', ' ', 'varchar', 12), ('14', 'Sortiername', '0', 'NOT NULL', 'varchar', 42), ('15', 'Strasse', '0', ' ', 'varchar', 42), ('22', 'Firmenname_2', '0', ' ', 'varchar', 42), ('23', 'Firmenname_3', '0', ' ', 'varchar', 42)]
nun habe ich folgenden Skript:
Code: Alles auswählen
while(string.find(line, '00U') < 0) and (string.find(line, '00E') < 0) :
line = infile.readline()
keyNr = (int(line[:2])-1)
keyVal = line[2:]
keyVal_D_2 = replace_all(keyVal, ucode)
if keyNr != -1:
keyName = attribute_koplett[keyNr][attrib_columb]
keyName_D_2 =replace_all(keyName, ucode)
print keyName_D
sqlStatement = ("UPDATE "+m.table_name+" SET " + keyName_D_2 + " = '"+keyVal_D_2.strip()+"' " + sqlStatementWhere)
print sqlStatement
cur.execute (sqlStatement)
con.commit()
hole ich mir den Attributenname aus dieser Liste indem ich keyNr als Index(ElementenNr) nutze.
Soweit alles gut. Das Problem ist aber, dass manche Attribute haben komische ID's:('14', 'Sortiername', '0', 'NOT NULL', 'varchar', 42), ('15', 'Strasse', '0', ' ', 'varchar', 42), ('22', 'Firmenname_2', '0', ' ', 'varchar', 42), ('23', 'Firmenname_3', '0', ' ', 'varchar', 42) -> also 14, 15, 22, 23
deshalb kriege ich einen Fehler: IndexError: list index out of range
ich muss also an dieser Stelle den eingelesenen keyNr erst mit 'attribute_koplett[keyNr][0]' also mit dem ID vergleichen und erst dann diesen Attributtenname übernehmen!!
Wie kann ich denn das machen?????
Danke
Fedjan