2 # -*- coding: utf-8 -*-
3 # vim: sw=4 ts=4 expandtab ai
5 """Module for work with database"""
15 """class for work with database"""
18 self.conn = self.connect()
22 """connect to database"""
24 if os.access(dbname, os.F_OK|os.R_OK|os.W_OK):
25 conn = sqlite3.connect(dbname)
27 print "access to database file error"
31 def get_record(self, id):
33 """return record field"""
34 cur = self.conn.cursor()
35 cur.execute("select field.name, data.value "
36 "from data left join field "
37 "on data.id_field=field.id "
38 "where data.id=?", (id,))
41 print "key = %s value = %s" % (row[0], row[1])
42 self.data[row[0]] = row[1]
45 def get_allrecords(self, field):
48 cur = self.conn.cursor()
49 cur.execute("select data.id, data.value "
50 "from data left join field "
51 "on data.id_field=field.id "
52 "where field.name=?", (field,))
56 self.data[row[0]] = row[1]
59 def get_id(self, table, value):
61 """get id for value into table"""
64 cur = self.conn.cursor()
65 query = "select id from %s where name='%s'" % (table, value)
70 query = "insert into %s (name) values ('%s')" % (table, value)
77 def ins_record(self, rec):
79 """insert record into database"""
81 #conn = self.connect()
83 print "database connect error"
85 cur = self.conn.cursor()
86 cur.execute("select max(id) from data")
87 id_record = cur.fetchone()[0]
91 id_record = id_record + 1
92 print "id_record=%s" % (id_record,)
95 for key, val in rec.items():
96 #print "key=%s value=%s" % (key, val)
97 #cur.execute("select id from field where name=?", (key,))
99 #id_field = cur.fetchone()
100 #if id_field is None:
101 # #write new field ваы
102 # cur.execute("insert into field (name) values (?)", (key,))
103 # id_field = cur.lastrowid
105 # id_field = id_field[0]
106 # insert row into data
107 #print "id=%s id_field=%s value=%s" % (id_record, id_field, val)
108 id_field = self.get_id("field", key)
111 if key == 'department':
114 cur.execute("insert into data (id, id_field, value) values (?, ?, ?)",
115 (id_record, id_field, i))
117 #insert comppane into table struct
118 id0 = self.get_id("struct", struct[0][0])
119 cur.execute("update struct set parent=0 where id=?", (id0,))
120 id1 = self.get_id("struct", struct[1][0])
121 cur.execute("update struct set parent=? where id=?", (id0, id1))
122 cur.execute("insert into relation (id_data, id_struct) values (?, ?)", (id_record, id1))
126 def clear_data(self):
128 """clear all record from table data"""
129 conn = self.connect()
131 print "database connect error"
134 cur.execute("delete from data")
135 cur.execute("delete from field")
136 cur.execute("delete from struct")
137 cur.execute("delete from relation")
143 """create TreeStore from database table Struct"""
144 ts = gtk.TreeStore(int, str)
146 conn = self.connect()
150 cur.execute("select id, name, parent from struct")
154 item[row[0]] = ts.append(None, [row[0], row[1]])
156 ts.append(item[row[2]], [row[0], row[1]])