4 DATABASE_NAME = 'contacts.db'
10 id integer primary key,
16 id integer primary key,
20 create table relation (
26 id integer primary key,
36 def __init__(self, basedir):
37 self._path = os.path.join(basedir, DATABASE_NAME)
39 if not os.path.exists(self._path):
42 self.conn = sqlite3.connect(self._path)
45 """Creates new databse."""
47 self.conn = sqlite3.connect(self._path)
48 self.conn.executescript(SCHEMA)
52 """Closes connection with database."""
57 def update_field(self, fname):
58 """Adds new field to database."""
60 fields = self.conn.execute("""SELECT name from field""").fetchall()
61 if not fname in fields:
62 self.conn.execute("""INSERT INTO field values((SELECT max(id)
63 FROM field)+1, ?)""", (fname,))
65 def get_field_id_by_name(self, fname):
66 """Returns field id by it name."""
68 return self.conn.execute("""SELECT id FROM field WHERE name=?""", \
69 (fname,)).fetchone()[0]
71 def get_field_name_by_id(self, _id):
72 """Returns field id by it name."""
74 return self.conn.execute("""SELECT name FROM field WHERE id=?""", \
77 def get_entry_by_id(self, _id):
78 """Returns full entry by it id."""
80 sql_res = self.conn.execute("""SELECT id_field, value FROM data
81 WHERE id=?""", (_id,)).fetchall()
82 return dict([(self.get_field_name_by_id(field_id), value) for field_id, \
85 def get_all_entries(self):
86 """Returns list of all entries."""
88 ids = set([item[0] for item in self.conn.execute( \
89 """SELECT id FROM data""").fetchall()])
90 return [self.get_entry_by_id(_id) for _id in ids]
95 if __name__ == "__main__":
97 #db.update_field('test')
98 #print db.get_field_id_by_name('fax')
99 #print db.get_entry_by_id(1)
100 #print db.get_all_entries()