[Tutor] Sort of database & "family tree" question

Alan Gauld alan.gauld at btinternet.com
Mon Jan 26 17:11:34 CET 2009


"Timo" <timomlists at gmail.com> wrote

> I'm writing an application that stores people with some info. I'm 
> doing this with ConfigParser and it works, but currently (for 
> testing), there are only 10 persons in it. What if I add, let's say, 
> about 500-600 or even more? Is this still a good choice?

I'd be happy with this for up to say 1000 people(arbitrary choice) but
for more than that I'd go with shelve.

> So my entry's look like this (more or less ;)):
> [person1]
> firstName = foo
> lastName = bar
> father = person2
> mother = person3

And I assume you are reading these into a Person class and
storing these classes in a persons dictionary? Then to access
a father becomes:

x = 'Person5'
print Persons[x].father.firstName

> Now, I want to make a family tree out of this, something that looks 
> like the following scheme (hope the formating will be kept):
>
> For person "foo bar", on his father-side, and mother-side the same.
>
>                                 | father
>                 | father--<
>                 |               | mother
> person2--<
>                 |               | father
>                 | mother--<
>                                 | mother
>

You don't necessarily need to store the tree if you only want to 
display it.
Using the Persons dictionary approach you can easily write a function 
to
traverse the tree by following the links to the top of the tree. (Note 
this
means some people will have to have None as father/mother!)

Similarly you can write a function to find everyone whose father or 
mother
is X and so on.

For small scale data this is probably easier than building a full tree
structure from your config file. Although that's always an option too
and for larger datasets would be more performant. But then I'd move
to pickle or shelve because you could load/save the whole tree in one
go.

HTH,

-- 
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld 




More information about the Tutor mailing list