classing database
authortanya <tanya@tanin.oblgaz>
Thu, 31 Dec 2009 11:52:24 +0000 (13:52 +0200)
committertanya <tanya@tanin.oblgaz>
Thu, 31 Dec 2009 11:52:24 +0000 (13:52 +0200)
database/db.py
meabook.py
parser.py
test/test.ldiff

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)
 
index f2adf43..1cb118c 100755 (executable)
@@ -16,7 +16,7 @@ if os.path.basename(sys.argv[0]).endswith("debug"):
     sys.path.insert(0, "../../")
     sys.path.insert(0, "../")
 
-def main(argv):
+def main():
     """ Main """
 
     print "Main"
index 2406f07..bea60b0 100755 (executable)
--- a/parser.py
+++ b/parser.py
@@ -4,17 +4,13 @@
 
 
 
-"""
-Main
-"""
 
 import sys
 import os
 
-# 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, "../")
+
+
+from database import db  
 
 
 def read_file(file_name):
@@ -23,8 +19,13 @@ def read_file(file_name):
     except IOError:
         return None
     result = {}
+    dbo = db.DbSqlite()
+    dbo.clear_data()
     for line in file:
         if line == "\n":
+            dbo.ins_record(result)
+            # unset result
+            result = {}
             continue
         key, value = line.split(':')
         key, value = key.strip(), value.strip()
@@ -32,14 +33,13 @@ def read_file(file_name):
             result[key].append(value)
         except KeyError:
             result[key]  = [value]
-    return result
+    #return result
 
 def main(argv):
     """ Main """
 
     print "Main"
     result=read_file("test/test.ldiff")
-    print result
 
 if __name__ == "__main__":
     sys.exit(main(sys.argv))
index ce3aa62..29875bb 100644 (file)
@@ -4,7 +4,7 @@ objectclass: person
 objectclass: organizationalPerson
 objectclass: inetOrgPerson
 objectclass: mozillaAbPersonAlpha
-givenName: Vasya
+givenName: Vasya конечно вася
 sn: Pupkin
 cn: Vasya Pupkin
 mozillaNickname: I'm cool