123
authortanya <tanya@tanin.oblgaz>
Mon, 25 Jan 2010 15:01:42 +0000 (17:01 +0200)
committertanya <tanya@tanin.oblgaz>
Mon, 25 Jan 2010 15:01:42 +0000 (17:01 +0200)
database/db.py
meabookdb
test/test.ldiff

index 6e86db2..b5ddd73 100755 (executable)
@@ -53,6 +53,24 @@ class DbSqlite:
             self.data[row[0]] = row[1]
         return self.data
 
+    def get_id(self, table, value):
+        
+        """get id for value into table"""
+        if self.conn is None:
+            return None
+        cur = self.conn.cursor()
+        query = "select id from %s where name='%s'" % (table, value)
+        cur.execute(query)
+        res = cur.fetchone()
+        id = 0
+        if res is None:
+            query = "insert into %s (name) values ('%s')" % (table, value)
+            cur.execute(query)
+            id = cur.lastrowid
+        else:
+            id = res[0]
+        return id
+
     def ins_record(self, rec):
 
         """insert record into database"""
@@ -70,22 +88,35 @@ class DbSqlite:
             id_record = id_record + 1
         print "id_record=%s" % (id_record,)
         
+        struct = ["", ""]
         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]
+            #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)
+            id_field = self.get_id("field", key)
+            if key == 'company':
+                struct[0] = val
+            if key == 'department':
+                struct[1] = val
             for i in val:
                 cur.execute("insert into data (id, id_field, value) values (?, ?, ?)", 
                 (id_record, id_field, i))
+
+        #insert comppane into table struct
+        id0 = self.get_id("struct", struct[0][0])
+        cur.execute("update struct set parent=0 where id=?", (id0,))
+        id1 = self.get_id("struct", struct[1][0])
+        cur.execute("update struct set parent=? where id=?", (id0, id1))
+        cur.execute("insert into relation (id_data, id_struct) values (?, ?)", (id_record, id1))
         self.conn.commit()
         #conn.close()
 
@@ -99,6 +130,8 @@ class DbSqlite:
         cur = conn.cursor()
         cur.execute("delete from data")
         cur.execute("delete from field")
+        cur.execute("delete from struct")
+        cur.execute("delete from relation")
         conn.commit()
         conn.close()
 
index f89de45..3446d82 100644 (file)
Binary files a/meabookdb and b/meabookdb differ
index 29875bb..8fca808 100644 (file)
@@ -44,4 +44,6 @@ mobile: 345
 homeStreet: Hmm znaet hde
 mozillaHomeLocalityName: N-sk
 street: Away Away
+department: dep1
+company: Mazolovo Corp