classing
[meabook] / database / db.py
1 #!/usr/bin/python -tt
2 # -*- coding: utf-8 -*-
3 # vim: sw=4 ts=4 expandtab ai
4
5 """Module for work with database"""
6
7 import os
8 import sqlite3
9
10 class DbSqlite:
11
12     """class for work with database"""
13     def connect(self):
14
15         """connect to database"""
16         dbname = "meabookdb"
17         if os.access(dbname, os.F_OK|os.R_OK|os.W_OK):
18             conn = sqlite3.connect(dbname)
19         else:
20             print "access to database file error"
21             conn = None
22         return conn
23
24     def ins_record(self, rec):
25
26         """insert record into database"""
27         #get id new record
28         conn = self.connect()
29         if conn is None:
30             print "database connect error"
31             return None
32         cur = conn.cursor()
33         cur.execute("select max(id) from data")
34         id_record = cur.fetchone()[0]
35         if id_record is None:
36             id_record = 1
37         else:
38             id_record = id_record + 1
39         print "id_record=%s" % (id_record,)
40         
41         for key, val in rec.items():
42             print "key=%s value=%s" % (key, val)
43             cur.execute("select id from field where name=?", (key,))
44
45             id_field = cur.fetchone()
46             if id_field is None:
47                 #write new field ваы
48                 cur.execute("insert into field (name) values (?)", (key,))
49                 id_field = cur.lastrowid
50             else:
51                 id_field = id_field[0]
52             # insert row into data
53             #print "id=%s id_field=%s value=%s" % (id_record, id_field, val)
54             for i in val:
55                 cur.execute("insert into data (id, id_field, value) values (?, ?, ?)", 
56                 (id_record, id_field, i))
57         conn.commit()
58         conn.close()
59
60     def clear_data(self):
61
62         """clear all record from table data"""
63         conn = self.connect()
64         if conn is None:
65             print "database connect error"
66             return None
67         cur = conn.cursor()
68         cur.execute("delete from data")
69         cur.execute("delete from field")
70         conn.commit()
71         conn.close()
72
73