Seite 1 von 1

too many values to unpack mit Oracle

Verfasst: Mittwoch 30. Juli 2008, 15:32
von bcit6k
Hallo,

ich lese aus einer Oracle DB Werte aus ,genau 8.

mein sql string sieht wie folgt aus:

Code: Alles auswählen

sql_check = "SELECT country,country_code,region,region_code,city,zip AS zipc,lat,lon FROM TABELLE WHERE IP = '%s' AND LAT IS NOT NULL AND LON IS NOT NULL" % (IP)

 curs2.execute(str(sql_check))
  check = curs2.fetchone()
danach greif ich mit einer for darauf zu


Code: Alles auswählen

for country,country_code,region,region_code,city,zipc,lat,lon in check:
      COUNTRY = country
      COUNTRY_CODE = country_code
      REGION = region
      REGION_CODE = region_code
      CITY = city
      ZIP = zipc
      LAT = lat
      LON = lon
ich bekomme aber immer die Fehlermeldung

Code: Alles auswählen

ValueError: too many values to unpack
check gibt genau 8 Werte zurück

Code: Alles auswählen

('Switzerland', 'CH', None, 'None', 'None', 'None', 47.0, 8.0)
nun bin ich mir nicht sicher ob das daran liegt das bei einigen Werten keine ' ' sind. Ob das dann eine art Typemismatch ist oder so?

HILFE Bitte werde nicht schlau aus dem ganzen

Danke

Verfasst: Mittwoch 30. Juli 2008, 16:12
von Rebecca
Damit deine for-Schleife funktioniert, muesste check aber zB. so aussehen,

Code: Alles auswählen

(('Switzerland', 'CH', None, 'None', 'None', 'None', 47.0, 8.0),
 ('Switzerland', 'CH', None, 'None', 'None', 'None', 47.0, 8.0),
 ('Switzerland', 'CH', None, 'None', 'None', 'None', 47.0, 8.0))
also ein Tupel von Tupeln sein.

Wenn du einfach nur das eine Tupel Variablen zuweisen willst, geht das so:

Code: Alles auswählen

country,country_code,region,region_code,city,zipc,lat,lon = check

Verfasst: Donnerstag 31. Juli 2008, 05:23
von bcit6k
aso, das erklärt nun einiges! Danke das werd ich gleich mal testen :)