Hi;<br>At one point Dennis Lee Bieber helped me with the following slightly modified code:<br><br>#!/usr/bin/python<br><br>import sys,os<br>sys.path.append(os.getcwd())<br>import MySQLdb<br>from login import login<br>import re, string<br>
<br>def printTree(aTree, level=0):<br>  tree = []<br>  for name in sorted(aTree.keys()):<br>    tree.append("%s%s") % ("\t" * level, name)<br>    printTree(aTree[name], level + 1)<br><br>def expand(fetched):<br>
  aDict = {}<br>  for (name, ) in fetched:<br>    aDict[name] = {}<br>  return aDict<br><br>def getChildren(levelDict, level = 0):<br>  MAXLEVEL = 7<br>  if level > MAXLEVEL:<br>    return  #possibly the data has a cycle/loop<br>
  for (nm, dt) in levelDict:<br>    cursor.execute('''select <a href="http://c.name">c.name</a> from categories as c<br>      inner join relationship as r<br>      on c.ID = r.Child<br>      inner join categories as p<br>
      on r.Parent = p.ID<br>      where p.category = %s<br>      order by <a href="http://c.name">c.name</a>''', (nm,))<br>    levelDict[nm] = expand(cursor.fetchall())<br>    # recursive call to do next level<br>
    getChildren(levelDict[nm], level + 1)<br>  # no data return as we are mutating dictionaries in place<br><br>def catTree():<br>  user, passwd, db, host = login()<br>  database = MySQLdb.connect(host, user, passwd, db)<br>
  cursor = database.cursor()<br>  cursor.execute('''create table if not exists categories <br>     (ID int(3) unsigned primary key, <br>     Category varchar(40), <br>     Parent varchar(40))''')<br>
  cursor.execute('select Category, Parent from categories;')<br>  data = cursor.fetchall()<br>  cursor.execute('select Category from categories order by Parent, ID')<br>  print data<br>  Categories = [itm[0] for itm in cursor] #untuple single column<br>
  if len(Categories) > 0:<br>    cursor.execute('select Parent from categories order by Parent, ID')<br>    Parents = [itm[0] for itm in cursor]<br>    MAXLEVEL = 15<br>    cursor.execute('''create table if not exists categories<br>
      (ID integer auto_increment primary key,<br>      Name varchar(40) not null,<br>      unique (Name)<br>      )''')<br>    cursor.execute('''create table if not exists Relationship<br>      (ID integer auto_increment primary key,<br>
      Parent integer not null,<br>      foreign key (Parent) references categories (ID),<br>      Child integer not null,<br>      foreign key (Child) references categories (ID),<br>      check (Parent <> Child) );''')<br>
    # get top level<br>    print 'ok'<br>    cursor.execute('select category from categories order by category')<br>    theTree = expand(cursor.fetchall())<br>    getChildren(theTree)<br>    connection.commit()<br>
    return printTree(theTree)<br>  else:<br>    return ['There are no categories yet.']<br><br>catTree()<br><br>This throws the error:<br><br>[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58] Traceback (most recent call last):<br>
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File "/var/www/html/<a href="http://angrynates.com/cart/createCats.py">angrynates.com/cart/createCats.py</a>", line 8, in ?<br>[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]     from catTree import catTree<br>
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File "/var/www/html/<a href="http://angrynates.com/cart/catTree.py">angrynates.com/cart/catTree.py</a>", line 77, in ?<br>[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]     catTree()<br>
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File "/var/www/html/<a href="http://angrynates.com/cart/catTree.py">angrynates.com/cart/catTree.py</a>", line 71, in catTree<br>[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]     getChildren(theTree)<br>
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]   File "/var/www/html/<a href="http://angrynates.com/cart/catTree.py">angrynates.com/cart/catTree.py</a>", line 25, in getChildren<br>[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58]     for (nm, dt) in levelDict:<br>
[Fri Nov 20 07:41:11 2009] [error] [client 208.84.198.58] ValueError: too many values to unpack<br><br>There is only one category in "categories". Please advise.<br>Victor<br>