Merge branch 'ldap_parser'
authorvlad <vlad@vlalin.(none)>
Thu, 28 Jan 2010 13:12:41 +0000 (15:12 +0200)
committervlad <vlad@vlalin.(none)>
Thu, 28 Jan 2010 13:12:41 +0000 (15:12 +0200)
database/__init__.py [new file with mode: 0644]
database/db.py [new file with mode: 0755]
meabook.py
meabookdb [new file with mode: 0644]
parser.py
test/test.ldiff

diff --git a/database/__init__.py b/database/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/database/db.py b/database/db.py
new file mode 100755 (executable)
index 0000000..39bdcf9
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/python -tt
+# -*- coding: utf-8 -*-
+# vim: sw=4 ts=4 expandtab ai
+
+"""Module for work with database"""
+
+import os
+import sqlite3
+
+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,)
+        
+        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()
+
+
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"
diff --git a/meabookdb b/meabookdb
new file mode 100644 (file)
index 0000000..f89de45
Binary files /dev/null and b/meabookdb differ
index a476a6e..83b65e8 100755 (executable)
--- a/parser.py
+++ b/parser.py
@@ -4,18 +4,14 @@
 
 
 
-"""
-Main
-"""
 
 import sys
 import os
 import re
 
-# 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):
@@ -24,8 +20,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)] = re.findall(r'(.+):(.+)', line) 
         key, value = key.strip(), value.strip()
@@ -33,13 +34,12 @@ def read_file(file_name):
             result[key].append(value)
         except KeyError:
             result[key]  = [value]
-    return result
+    #return result
 
 def main(argv):
     """ Main """
 
     result=read_file("test/test.ldiff")
-    print result
 
 if __name__ == "__main__":
     sys.exit(main(sys.argv))
index 3469af4..9b26f1b 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