[Python-de] Verzeichnisdump in der Datenbank

Julian Rath rath at abacon.net
Don Jul 1 14:08:36 CEST 2004


Jan Voges schrieb:

>Hallo!
>
>On 1 Jul 2004 at 11:39, Julian Rath wrote:
>
>Von mir erstmal nichts zum eigentlichen Problem, sondern noch 
>was zur Datenbanktabelle:
>
>  
>
>>Die Datenbanktabelle sollte so ausschauen
>>    
>>
>
>Sollte sie möglichst nicht, wenn sie den Normalformen genügen 
>soll. Die Information in der "child"-Spalte findet sich ja 
>bereits in der "fid"-Spalte. Das ist eine üble Redundanz. 
>Die erste Spalte würde ich übrigens nicht "id" nennen, da ich 
>bei dem Namen von einer eindeutigen ID ausgehen würde, aber 
>sie scheint bei Dir nur für Verzeichnisse eindeutig zu sein.
>
>Jan
>  
>
ja das is mir auch aufgefallen es wäre auch sehr viel einfacher wenn ich 
in meinem file dazugeschrieben hätte ob es ein node oder ein leaf ist 
aller dings habe ich es jetz einfach einmahl so geloest, allerdings 
waere eine ausgabe mit einrücken usw. sehr fein da ich das ganze dann in 
einer webseite darstellen können moechte sehr fein. Ideen?
Danke mfg
JUlain



-----
code:

def insdir(dr='/cdrom' ,dirnr = count):
    global count
   
    #print "Directory:", dr
    l1=os.listdir(dr)
    for fn in l1:
        count = count + 1
        cfn=os.path.join(dr,fn)
        if os.path.isdir(cfn):
            db.execute("INSERT INTO `media_content` ( `content_id` , 
`content_fid` , `content_name` )VALUES ('', '"+str(dirnr)+"', '"+fn+"')")
            insdir(cfn, count)
           
        else:
            db.execute("INSERT INTO `media_content` ( `content_id` , 
`content_fid` , `content_name`)VALUES ('', '"+str(dirnr)+"', '"+fn+"')")

space = 0
def listall(id):
    global space
    db.execute("SELECT * FROM `media_content` WHERE content_fid = " + 
str(id) + "")
    ls = db.fetchall()
    for fn in ls:
        ret = db.execute("SELECT `content_id` FROM `media_content` WHERE 
content_fid = " + str(fn[0]) + "")
        if ret <> 0:
            space = space + 1
            print "dir:",str(fn[2])
            listall(int(fn[0]))
        else:
            print "file:",str(fn[2])