#!/usr/bin/env python import os import sys import datetime import sqlite3 class F: def __init__(self, dbfile): self.con = sqlite3.connect(dbfile) self.con.text_factory = str self.con.row_factory = sqlite3.Row self.con.execute('''create table if not exists entry ( id integer primary key autoincrement, ts timestamp, data text)''') self.con.commit() def add(self, kw): self.con.execute('''insert into entry (ts, data) values (?, ?)''', (datetime.datetime.now(), kw)) self.con.commit() def search(self, kw): cur = self.con.cursor() cur.execute('''select id, ts, data from entry where data like "%%%s%%" order by id''' % kw) for result in cur.fetchall(): print result['id'], result['ts'], result['data'] def delete(self, ids): for id in ids: self.con.execute('''delete from entry where id = ?''', (id,)) self.con.commit() def tidy(self): self.con.execute('vacuum') self.con.commit() if __name__ == '__main__': f = F(os.path.join(os.path.expanduser('~'), '.f.db')) if len(sys.argv) > 2 and sys.argv[1] == 'add': f.add(' '.join(sys.argv[2:])) elif len(sys.argv) > 1 and sys.argv[1] == 'search': f.search(' '.join(sys.argv[2:])) elif len(sys.argv) > 2 and sys.argv[1] == 'delete': f.delete(sys.argv[2:]) elif len(sys.argv) == 2 and sys.argv[1] == 'tidy': f.tidy() else: print 'Usage: f add KWs|search [KWs]|delete IDs|tidy'