[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])