--- /dev/null
+#!/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()
+
+
-"""
-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):
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()
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))