classing
[meabook] / database / db.py
index d1d6e52..39bdcf9 100755 (executable)
@@ -2,57 +2,72 @@
 # -*- coding: utf-8 -*-
 # vim: sw=4 ts=4 expandtab ai
 
+"""Module for work with database"""
 
-"""
-Main
-"""
-
-import sys
 import os
 import sqlite3
 
-# add mnemosyne directory to Python path in debug mode
-if os.path.basename(sys.argv[0]).endswith("debug"):
-    sys.path.insert(0, "../../")
-    sys.path.insert(0, "../")
-
-def connect():
-    """connect to database"""
-    file = "meabookdb";
-    if os.access(file, os.F_OK|os.R_OK|os.W_OK):
-        conn = sqlite3.connect(file)
-    else:
-        print "access to database file error"
-        conn = None
-    return conn
-
-def insRecord(record):
-    """insert record into database"""
-    #get id new record
-    conn = connect()
-    if conn is None:
-        print "database connect error"
-        return None
-    c = conn.cursor()
-    c.execute("select max(id) from data")
-    id_record = c.fetchone()[0] + 1
-    for k, v in record.items():
-        #print "key=%s value=%s" % (k, v)
-        c.execute("select id from field where name=?", (k,))
-        id_field = c.fetchone()[0]
-        if id_field is None:
-            #write new field ваы
-            c.execute("insert into field (name) values (?)", (k,))
-            id_field = c.lastrowid
+class DbSqlite:
+
+    """class for work with database"""
+    def connect(self):
+
+        """connect to database"""
+        dbname = "meabookdb"
+        if os.access(dbname, os.F_OK|os.R_OK|os.W_OK):
+            conn = sqlite3.connect(dbname)
+        else:
+            print "access to database file error"
+            conn = None
+        return conn
+
+    def ins_record(self, rec):
+
+        """insert record into database"""
+        #get id new record
+        conn = self.connect()
+        if conn is None:
+            print "database connect error"
+            return None
+        cur = conn.cursor()
+        cur.execute("select max(id) from data")
+        id_record = cur.fetchone()[0]
+        if id_record is None:
+            id_record = 1
+        else:
+            id_record = id_record + 1
+        print "id_record=%s" % (id_record,)
         
-        # insert row into data
-        print "id=%s id_field=%s value=%s" % (id_record, id_field, v)
-        c.execute("insert into data (id, id_field, value) values (?, ?, ?)", (id_record, id_field, v))
-    conn.commit()
-    conn.close()
+        for key, val in rec.items():
+            print "key=%s value=%s" % (key, val)
+            cur.execute("select id from field where name=?", (key,))
+
+            id_field = cur.fetchone()
+            if id_field is None:
+                #write new field ваы
+                cur.execute("insert into field (name) values (?)", (key,))
+                id_field = cur.lastrowid
+            else:
+                id_field = id_field[0]
+            # insert row into data
+            #print "id=%s id_field=%s value=%s" % (id_record, id_field, val)
+            for i in val:
+                cur.execute("insert into data (id, id_field, value) values (?, ?, ?)", 
+                (id_record, id_field, i))
+        conn.commit()
+        conn.close()
+
+    def clear_data(self):
 
+        """clear all record from table data"""
+        conn = self.connect()
+        if conn is None:
+            print "database connect error"
+            return None
+        cur = conn.cursor()
+        cur.execute("delete from data")
+        cur.execute("delete from field")
+        conn.commit()
+        conn.close()
 
-record = {"givenName":"Vasya", "cn":"Pupkin", "mail":"vasya@puplin.com"}
-insRecord(record)
-sys.exit(0)