· 7 years ago · Feb 16, 2019, 03:56 AM
1import sqlite3
2
3conn = sqlite3.connect('emaildb.sqlite')
4cur = conn.cursor()
5
6cur.execute('DROP TABLE IF EXISTS Counts')
7
8cur.execute('''
9CREATE TABLE Counts (email TEXT, count INTEGER)''')
10
11fname = input('Enter file name: ')
12if (len(fname) < 1): fname = 'mbox-short.txt'
13fh = open(fname)
14for line in fh:
15 if not line.startswith('From: '): continue
16 pieces = line.split()
17 email = pieces[1]
18 cur.execute('SELECT count FROM Counts WHERE email = ? ', (email,))
19 row = cur.fetchone()
20 if row is None:
21 cur.execute('''INSERT INTO Counts (email, count)
22 VALUES (?, 1)''', (email,))
23 else:
24 cur.execute('UPDATE Counts SET count = count + 1 WHERE email = ?',
25 (email,))
26 conn.commit()
27
28# https://www.sqlite.org/lang_select.html
29sqlstr = 'SELECT email, count FROM Counts ORDER BY count DESC LIMIT 10'
30
31for row in cur.execute(sqlstr):
32 print(str(row[0]), row[1])
33
34cur.close()