# -*- 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)
-"""
-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):
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()
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))