On Tuesday 04 May 2004 03:38 pm, William K. Volkman wrote:
> db = metakit.storage('/var/tmp/test.mk',1)
> vw = db.getas('test[f1:I,f2:s,seq:I,state:s]')
> for i in xrange(5):
> � � vw.append((i,'%d'%i,99,'F'))
> � � num = random.randint(0,4)
> � � if num > 0:
> � � � � for s in range(num):
> � � � � � � vw.append((i,'%d'%i,s,'%d'%s))
> � � db.commit()
> metakit.dump(vw)
>
> pickon = random.randint(0,4)
> print "******** Entry to pick on",pickon
>
> subvw = vw.select(f1=pickon)
> rs = subvw.filter(lambda row: row.state == 'F')

Why filter the selected view? Now you've got the indices in the selected view, 
and getting the true indices in the original view takes something like this:
iv1 = vw.indices(subvw)
iv2 = iv1.remapwith(rs)
vw.remove(iv2) 

Why not
dead = vw.filter(lambda row: row.f1==pickon and row.state == 'F')
vw.remove(dead)

> subsubvw = subvw.remapwith(rs)
> metakit.dump(subsubvw)
> #
> ## Now I want remove the filter rows, how can I back track?
> #
> ## If I use
> ##vw.remove(rs)
> ## It only works if order is perfect
> #
> ## The delete and remove methods are not available on the derived views
> ##subvw.remove(rs)
> ##subsubvw.remove(rs)
> #
> vw.remove(vw.indices(subvw))
> # Deletes all 'pickon' records, not just the ones in state 'F'

-- Gordon

_____________________________________________
Metakit mailing list  -  [EMAIL PROTECTED]
http://www.equi4.com/mailman/listinfo/metakit

Reply via email to