[Tutor] mysql store directory information

Tiago Saboga tiagosaboga at terra.com.br
Fri Apr 7 03:54:01 CEST 2006


Em Qui 06 Abr 2006 15:41, Danny Yoo escreveu:
> On Thu, 6 Apr 2006, Tiago Saboga wrote:
> > As a first part of a project, I need to store a directory tree in a
> > mysql db.  I'm wondering if there is a canonical way of doing that. I
> > don't know if it's an appropriate question for this list, but I think
> > it's not only a choice of db design, but also a choice of appropriate
> > python tools.
>
> Hi Tiago,
>
> What are the interesting features of a directory?  You might want to first
> model what you want, and then figure out an appropriate database table
> structure to represent that model.

Hi, and thank you.

I knew I had to explain longer what I wanted, but I was kind of frustrated by 
the difficulty of writing in english. But I'll try to think less about it, 
and go further.

As I said, this is part of a project. For each of these files, I'll have a 
database of informations, and this is what really matters, and I have a data 
model for that. But I want also to able to find these files, which are on 
removable media (cds and dvds). As I'll have to store where's the file, I 
thought I could as well store some other basic infos, at least the size (I 
really don't know yet what else could be useful later).

> > My first approach is a table with the following columns:
> > id - path - file name - size
>
> So maybe we can say that a Directory can be modeled as:
>
> ######
> class Directory:
>     def __init__(self, id, path, file_name, size):
>         self.id = id
>         self.path = path
>         self.file_name = file_name
>         self.size = size
> ######
>
> But why will you want to store this structure in the database, if it's
> already available on disk?  Why not query the directory directly?

See above.

>
> > I'm starting to code it, and I'd like to know if you have a better
> > suggestion...
>
> I'd flesh out a few more of the requirements first; the requirement to
> store the directory in the database is slightly vague, so you probably
> will want to ask more questions about what the problem's really about.
>
>
>
> You might find something like SQLObject useful:
>
>     http://www.sqlobject.org/
>     http://www.turbogears.org/about/sqlobject.html
>
> where you go fairly directly from data model to SQL table structure with
> SQLObject providing the default mapping strategy.

Hey, this is *really* great ;-)

Hey, I love it.

OK, but now why would I use such a directory class as you proposed above? 
(preliminar question: isn't it rather a file class, as it has only one 
filename? Anyway, I see your point.) I would make a SQLobject class for 
files, and feed it with something like 

def get_dirtree(path):
  tree = []
  for dirpath, dirnames, filenames in os.walk(path):
    if filenames:
      for file in filenames:
        size = os.path.getsize(os.path.join(dirpath,file))
        tree.append((dirpath,file,size))
  return tree

What do you think? Of course, it could be the __init__ function of class, but 
I don't see why.

Thanks, again.

Tiago.


More information about the Tutor mailing list