Storing of folder structure in SQL DB
Amit Khemka
khemkaamit at gmail.com
Thu Apr 5 08:22:55 EDT 2007
On 5 Apr 2007 04:58:22 -0700, Sergei Minayev <sergei.minayev at gmail.com> wrote:
> Hi All!
> Can you please help me with the following problem:
> I need to store a copy of local folders structure in MySQL database.
> I have chosen the following table structure for that:
> ------------------------------------------------
> | id | id_uplink | folder_name |
> ------------------------------------------------
> id - unique property of each folder.
> id_uplink - id of upper level folder is stored here (for example: if
> id of c:\test is 1, than id_uplink of c:\test\python equals 1).
> folder_name - name of folder.
> You see, i dont want to store the path list, but the structure.
>
> The question is how to implement that in Python. I easily made it in C+
> + using recursion. But, unfortunately, I can't figure it out how to
> make it in python using os.walk function (or can you recommend smth.
> else???). :( Though it looks quite simple, but anyway.
>
> Best Regards,
os.walk should be more than sufficient in your case. You can navigate
the directory structure and at each 'new' directory find its parents
id and assign a new-id to this 'new' directory.
An Example:
import os
root='/my/root/directory'
id =0
tree={root:(-1, id)}
id+=1
for path, dirs, files in os.walk(root):
for dir in dirs:
if not tree.has_key(path+'/'+dir):
tree[path+'/'+dir]=(tree[path][1], id)
id+=1
It stores ids as a tuple (parent_id, id) in a dictionary(tree). Should
be straight forward to modify to your requirements. Also you can make
the following code more efficient by saving/caching some lookups !
Cheers,
--
----
Amit Khemka -- onyomo.com
Home Page: www.cse.iitd.ernet.in/~csd00377
Endless the world's turn, endless the sun's Spinning, Endless the quest;
I turn again, back to my own beginning, And here, find rest.
More information about the Python-list
mailing list