Storing of folder structure in SQL DB

Discussion in 'Python' started by Sergei Minayev, Apr 5, 2007.

  1. 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,
    Segei
     
    Sergei Minayev, Apr 5, 2007
    #1
    1. Advertising

  2. Sergei Minayev

    Amit Khemka Guest

    On 5 Apr 2007 04:58:22 -0700, Sergei Minayev <> 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.
     
    Amit Khemka, Apr 5, 2007
    #2
    1. Advertising

  3. Sergei Minayev

    Amit Khemka Guest

    On 4/5/07, Amit Khemka <> wrote:
    > On 5 Apr 2007 04:58:22 -0700, Sergei Minayev <> wrote:

    <snip>
    > 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 !


    use os.sep instead of '/' !

    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.
     
    Amit Khemka, Apr 5, 2007
    #3
  4. In <>, Amit Khemka
    wrote:

    > On 4/5/07, Amit Khemka <> wrote:
    >> On 5 Apr 2007 04:58:22 -0700, Sergei Minayev <> wrote:

    > <snip>
    >> 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
    >>
    >> […]

    >
    > use os.sep instead of '/' !


    Or even better `os.path.join()` instead of building the strings with ``+``.

    Ciao,
    Marc 'BlackJack' Rintsch
     
    Marc 'BlackJack' Rintsch, Apr 5, 2007
    #4
  5. Amit Khemka:
    > On 5 Apr 2007 04:58:22 -0700, Sergei Minayev <> 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.


    Thanks! Your code example was really helpful!
     
    Sergei Minayev, Apr 6, 2007
    #5
  6. Sergei Minayev

    Guest

    folderid name parentid

    1 cricket 0
    2 india 1
    3 sachin 2
    4 tennis 0
    5 saniamirza 4

    i need coding for this table..folder id 'll automatically populate..
     
    , Sep 21, 2012
    #6
  7. Sergei Minayev

    Guest

    On Friday, September 21, 2012 11:57:05 AM UTC+5:30, wrote:
    > folderid name parentid
    >
    >
    >
    > 1 cricket 0
    >
    > 2 india 1
    >
    > 3 sachin 2
    >
    > 4 tennis 0
    >
    > 5 saniamirza 4
    >
    >
    >
    > i need coding for this table..folder id 'll automatically populate..


    in asp.net or sql
     
    , Sep 21, 2012
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Wynand Winterbach

    Storing the size of an array in the structure itself

    Wynand Winterbach, Jul 6, 2004, in forum: C Programming
    Replies:
    22
    Views:
    603
    Rob Thorpe
    Jul 26, 2004
  2. toton
    Replies:
    11
    Views:
    736
    toton
    Oct 13, 2006
  3. ns
    Replies:
    1
    Views:
    321
    bruce barker
    Mar 29, 2008
  4. Jonathan Wood
    Replies:
    1
    Views:
    530
    Jonathan Wood
    Jun 2, 2008
  5. Ulrich Scholz

    jdk folder structure, sample folder

    Ulrich Scholz, Jan 25, 2012, in forum: Java
    Replies:
    4
    Views:
    774
    Jeff Higgins
    Jan 26, 2012
Loading...

Share This Page