chiark / gitweb /
Release 0.32-5.5.
[python-cdb] / Example
1 #! /usr/bin/env python
2
3 # python-cdb 0.32 "Example"
4
5 import cdb
6
7 print cdb.__version__
8
9 ## cdbmake object
10
11 fn = "f.cdb"
12
13 maker = cdb.cdbmake(fn, fn + ".tmp");
14
15 maker.add('flim', 'flam')        # +4,4:flim->flam
16 maker.add('map', 'hash')         # +3,4:map->hash
17 maker.add('spam', 'eggs')        # +4,4:spam->eggs
18 maker.add('map', 'dictionary')   # +3,10:map->dictionary
19 maker.add('map', 'assoc. array') # +3,12:map->assoc. array
20
21 print "Added %d records to CDB %s (fd %d)" % \
22       (maker.numentries, maker.fn, maker.fd)
23
24 maker.finish()
25
26 del(maker)
27
28 ## cdb object
29
30 c = cdb.init(fn)             # or init( file_obj.fileno() )
31
32 print len(c)                 # 5
33
34 print c['flim']              # 'flam'
35 print c.get('spam')          # 'eggs'
36 print c.get('map', 0)        # 'hash' -- a la cdbget utility
37 print c.get('map', 1)        # 'dictionary'
38
39 r = c.get('map')             # will print:
40 while r is not None:         #   'hash'
41     print r                  #   'dictionary'
42     r = c.getnext()          #   'assoc. array'
43
44 print c.keys()               # ['flim', 'map', 'spam']
45
46 for k in c.keys():           # flim => ['flam']
47   print k, '=>', c.getall(k) # map => ['hash', 'dictionary', 'assoc. array']
48                              # spam => ['eggs']
49
50 k = c.firstkey()             # same as above
51 while k is not None:
52     print k, "=>", c.getall(k)
53     k = c.nextkey()
54
55
56 def cdbdump(cdb_o):          # as the cdbdump utility
57     r = cdb_o.each()         # r = ('key', 'val') or None
58     while r:
59         print "+%d,%d:%s->%s" % (
60               len(r[0]), len(r[1]),
61               r[0], r[1] )
62         r = cdb_o.each()
63     print
64
65
66 cdbdump(c)