1#!/usr/bin/env python
2
3from vdb import *
4
5#for this to work you need:
6#at $HOME/.ncbi/lib64 : libncbi-wvdb.so
7
8schematxt = '''
9version 1;
10table A_TABLE #1.0
11{
12    column U8 C1;
13    column U32 C2;
14    column ascii C3;
15    column I16 C4;
16    column F32 C5;
17    column bool C6;
18};
19
20'''
21
22def fill_table_random( cur, cols, row_count, value_count ) :
23    for idx in xrange( 0, row_count ) :
24        cur.OpenRow()
25        cols[ "C1" ].write_rand( value_count, 100 )
26        cols[ "C2" ].write_rand( value_count, 100000 )
27        cols[ "C3" ].write_rand( value_count )
28        cols[ "C4" ].write_rand( value_count, 100000 )
29        cols[ "C5" ].write_rand( value_count, 100000 )
30        cols[ "C6" ].write_rand( value_count )
31        cur.CommitRow()
32        cur.CloseRow()
33
34def fill_table_with_values( cur, cols ) :
35    cur.OpenRow()
36    cols[ "C1" ].write( [ 1, 2, 3, 4 ] )
37    cols[ "C2" ].write( [ 1000, 1001, 1002 ] )
38    cols[ "C3" ].write( "hallo" )
39    cols[ "C4" ].write( [ 101010, 2020, 3030 ] )
40    cols[ "C5" ].write( [ 10.101, 20.202, 30.303 ] )
41    cols[ "C6" ].write( [ True, True, False, False, True ] )
42    cur.CommitRow()
43    cur.CloseRow()
44
45def fill_table_with_single_values( cur, cols ) :
46    cur.OpenRow()
47    cols[ "C1" ].write( 1 )
48    cols[ "C2" ].write( 1000 )
49    cols[ "C3" ].write( "hallo" )
50    cols[ "C4" ].write( 5544 )
51    cols[ "C5" ].write( 55.5 )
52    cols[ "C6" ].write( True )
53    cur.CommitRow()
54    cur.CloseRow()
55
56def fill_table_with_default_values( cur, cols, row_count ) :
57    cols[ "C1" ].set_default( [ 100, 101 ] )
58    for idx in xrange( 0, row_count ) :
59        cur.OpenRow()
60        cols[ "C2" ].write( [ 10 + idx, 11 + idx, 12 + idx ] )
61        cols[ "C3" ].write( "line #%d"%idx )
62        cols[ "C4" ].write( [ 101 + idx, 102 + idx, 103 + idx ] )
63        cols[ "C5" ].write( [ 10.1 + idx, 20.2 + idx, 30.3 + idx ] )
64        cols[ "C6" ].write( [ True ] )
65        cur.CommitRow()
66        cur.CloseRow()
67
68def make_table( mgr, schema_txt, table_name ) :
69    try :
70        schema = mgr.MakeSchema( schema_txt )
71        tbl = mgr.CreateTable( schema, "A_TABLE", table_name )
72        cur = tbl.CreateCursor( OpenMode.Write )
73        cols = cur.OpenColumns( [ "C1", "C2", "C3", "C4", "C5", "C6" ] )
74        fill_table_random( cur, cols, 2, 5 )
75        fill_table_with_values( cur, cols )
76        fill_table_with_single_values( cur, cols )
77        fill_table_with_default_values( cur, cols, 2 )
78        cur.Commit()
79    except vdb_error as e :
80        print( e )
81
82
83if __name__ == '__main__' :
84
85    table_name = "L3"
86
87    try :
88        #open a manager
89        mgr = manager( OpenMode.Write, None )
90
91        make_table( mgr, schematxt, table_name )
92        mgr.OpenTable( table_name ).print_rows()
93
94    except vdb_error as e :
95        print( e )
96