Merge branch 'ldap_parser' into database
[meabook] / database / db.py
1 #!/usr/bin/python -tt
2 # -*- coding: utf-8 -*-
3 # vim: sw=4 ts=4 expandtab ai
4
5
6 """
7 Main
8 """
9
10 import sys
11 import os
12 import sqlite3
13
14 # add mnemosyne directory to Python path in debug mode
15 if os.path.basename(sys.argv[0]).endswith("debug"):
16     sys.path.insert(0, "../../")
17     sys.path.insert(0, "../")
18
19 def connect():
20     """connect to database"""
21     file = "meabookdb";
22     if os.access(file, os.F_OK|os.R_OK|os.W_OK):
23         conn = sqlite3.connect(file)
24     else:
25         print "access to database file error"
26         conn = None
27     return conn
28
29 def insRecord(record):
30     """insert record into database"""
31     #get id new record
32     conn = connect()
33     if conn is None:
34         print "database connect error"
35         return None
36     c = conn.cursor()
37     c.execute("select max(id) from data")
38     id_record = c.fetchone()[0] + 1
39     for k, v in record.items():
40         #print "key=%s value=%s" % (k, v)
41         c.execute("select id from field where name=?", (k,))
42         id_field = c.fetchone()[0]
43         if id_field is None:
44             #write new field ваы
45             c.execute("insert into field (name) values (?)", (k,))
46             id_field = c.lastrowid
47         
48         # insert row into data
49         print "id=%s id_field=%s value=%s" % (id_record, id_field, v)
50         c.execute("insert into data (id, id_field, value) values (?, ?, ?)", (id_record, id_field, v))
51     conn.commit()
52     conn.close()
53
54
55 record = {"givenName":"Vasya", "cn":"Pupkin", "mail":"vasya@puplin.com"}
56 insRecord(record)
57 sys.exit(0)
58