Too Many Values To Unpack

Victor Subervi victorsubervi at gmail.com
Fri Nov 20 16:45:15 CET 2009


Hi;
At one point Dennis Lee Bieber helped me with the following slightly
modified code:

#!/usr/bin/python

import sys,os
sys.path.append(os.getcwd())
import MySQLdb
from login import login
import re, string

def printTree(aTree, level=0):
  tree = []
  for name in sorted(aTree.keys()):
    tree.append("%s%s") % ("\t" * level, name)
    printTree(aTree[name], level + 1)

def expand(fetched):
  aDict = {}
  for (name, ) in fetched:
    aDict[name] = {}
  return aDict

def getChildren(levelDict, level = 0):
  MAXLEVEL = 7
  if level > MAXLEVEL:
    return  #possibly the data has a cycle/loop
  for (nm, dt) in levelDict:
    cursor.execute('''select c.name from categories as c
      inner join relationship as r
      on c.ID = r.Child
      inner join categories as p
      on r.Parent = p.ID
      where p.category = %s
      order by c.name''', (nm,))
    levelDict[nm] = expand(cursor.fetchall())
    # recursive call to do next level
    getChildren(levelDict[nm], level + 1)
  # no data return as we are mutating dictionaries in place

def catTree():
  user, passwd, db, host = login()
  database = MySQLdb.connect(host, user, passwd, db)
  cursor = database.cursor()
  cursor.execute('''create table if not exists categories
     (ID int(3) unsigned primary key,
     Category varchar(40),
     Parent varchar(40))''')
  cursor.execute('select Category, Parent from categories;')
  data = cursor.fetchall()
  cursor.execute('select Category from categories order by Parent, ID')
  print data
  Categories = [itm[0] for itm in cursor] #untuple single column
  if len(Categories) > 0:
    cursor.execute('select Parent from categories order by Parent, ID')
    Parents = [itm[0] for itm in cursor]
    MAXLEVEL = 15
    cursor.execute('''create table if not exists categories
      (ID integer auto_increment primary key,
      Name varchar(40) not null,
      unique (Name)
      )''')
    cursor.execute('''create table if not exists Relationship
      (ID integer auto_increment primary key,
      Parent integer not null,
      foreign key (Parent) references categories (ID),
      Child integer not null,
      foreign key (Child) references categories (ID),
      check (Parent <> Child) );''')
    # get top level
    print 'ok'
    cursor.execute('select category from categories order by category')
    theTree = expand(cursor.fetchall())
    getChildren(theTree)
    connection.commit()
    return printTree(theTree)
  else:
    return ['There are no categories yet.']

catTree()

This throws the error:

[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58] Traceback (most
recent call last):
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File
"/var/www/html/angrynates.com/cart/createCats.py", line 8, in ?
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]     from catTree
import catTree
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File
"/var/www/html/angrynates.com/cart/catTree.py", line 77, in ?
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]     catTree()
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File
"/var/www/html/angrynates.com/cart/catTree.py", line 71, in catTree
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]
getChildren(theTree)
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File
"/var/www/html/angrynates.com/cart/catTree.py", line 25, in getChildren
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]     for (nm, dt)
in levelDict:
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58] ValueError: too
many values to unpack

There is only one category in "categories". Please advise.
Victor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20091120/71a1262b/attachment.html>


More information about the Python-list mailing list