From 45f57f0d3d068978437e47e5ecc943dcac1288d7 Mon Sep 17 00:00:00 2001 From: tanya Date: Thu, 31 Dec 2009 13:52:24 +0200 Subject: [PATCH] classing --- database/db.py | 107 +++++++++++++++++++++++++++++++------------------------ meabook.py | 2 +- parser.py | 18 +++++----- test/test.ldiff | 2 +- 4 files changed, 72 insertions(+), 57 deletions(-) diff --git a/database/db.py b/database/db.py index d1d6e52..39bdcf9 100755 --- a/database/db.py +++ b/database/db.py @@ -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) diff --git a/meabook.py b/meabook.py index f2adf43..1cb118c 100755 --- a/meabook.py +++ b/meabook.py @@ -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/parser.py b/parser.py index 2406f07..bea60b0 100755 --- 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)) diff --git a/test/test.ldiff b/test/test.ldiff index ce3aa62..29875bb 100644 --- a/test/test.ldiff +++ b/test/test.ldiff @@ -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 -- 1.7.9.5