1. Не пакуй в rar. Уважай linux-сообщество =) Распаковать rar можно, но лучше использовать более нейтральный формат - zip.
2. Используй в исходниках кодировку UTF-8.
3. Не пиши комментарии на русском. Имхо, это ламерство =) Т.е. я не имею в виду что ты ламер, но писать комментарии на русском как-то несерьёзно. Учитывай англоязыное сообщество. А оно в разы больше рускоязычного.
4. Между def ставь хотя бы один перенос строки ;)
5. “clock,key,tail = line”, “if key=='K':” после запятых, знаков равно и т.д. ставятся пробелы. У тебя сплошь и рядом тотальное отсутствие пробелов. Короче, по пункту 4 и 5 замечание общее: изучи стандарт кодирования (
PEP-8) и свято ему придерживайся. Сбережёшь нервы себе и остальным =)
6.
try:
cur.execute("SELECT max(id) FROM games")
max_id = cur.fetchone()[0]
print 'found max game num', max_id
cur.execute("SELECT id, crashed, min_end, sec_end, pos FROM games WHERE id=%d" % max_id)
row = cur.fetchone()
print 'last game=',row
if row[1]:
print "last game has no ending line"
sel = """
DELETE FROM games WHERE id=%d;
DELETE FROM actions WHERE game_number=%d;
DELETE FROM hits WHERE game_number=%d;
DELETE FROM players_time WHERE game_number=%d;
DELETE FROM players_streak WHERE game_number=%d;
""" % ((max_id,)*5)
cur.executescript(sel)
con.commit()
sel = "SELECT id, crashed, min_end, sec_end, pos FROM games WHERE id IN (SELECT max(id) FROM games)"
cur.execute(sel)
row = cur.fetchone()
pos = row[-1]
n_games = row[0]
except:
# в базе нет таблицы игр
cur.executescript("""
CREATE TABLE actions
(id INTEGER PRIMARY KEY,
game_number INTEGER,
min INTEGER, sec INTEGER,
idp INTEGER,
side VARCHAR(10),
player VARCHAR(70),
action VARCHAR(20));
..........
Except без указания экзепшена! что именно он перехватит и на какой строке это может произойти мне не понятно.
В целом код нормальный, но этот момент явно скользкий.
Предлагаю:
а) вынести код, создающий таблицы, в отдельную процедуру.
б) сделать явную проверку наличия таблиц в базе. если таблиц нет, то вызвать процедуру создания.
г) вынести SQL-запросы в отдельный .sql файл.
Ну а в целом ты молодец =)
Советую перевести комменты на английский и выложить в общий доступ например в гугловском репозитории.
И через какое-то время сообщество поспособствует развитию твоей статистики.
Кто-то сообщит о багах, кто-то пришлёт доработки и так далее.