From: Razvan Deaconescu Date: Mon, 22 Aug 2011 10:16:46 +0000 (+0300) Subject: ppf: Add support for datetime timestamps in SQLiteDatabaseAccess. X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=23104baea45e872cf65ea25510dee53bed90655b;p=cs-p2p-next.git ppf: Add support for datetime timestamps in SQLiteDatabaseAccess. --- diff --git a/ppf/new/storage.py b/ppf/new/storage.py index a14de4e..9701ff4 100644 --- a/ppf/new/storage.py +++ b/ppf/new/storage.py @@ -9,6 +9,7 @@ import os.path import re import logging import sqlite3 +import datetime # # Logging code heavily inspired by Logging HOWTO documentation: @@ -475,9 +476,22 @@ class SQLiteDatabaseAccess(DatabaseAccess): self.cursor.execute(insert_query) self.conn.commit() + def get_string_timestamp(self, ts): + # Timestamp is Python Datatime. Convert it to string format and + # pass it to internal SQLITE julianday() function. + return "%s-%s-%s %s:%s:%s.%s" \ + %(ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second, + 1000 * ts.microsecond) + def add_peer_status_message(self, msg): self.reset_query() self.append_to_insert_query("client_session_id", msg.client_session_id) + + # TODO: Check msg.timestamp is not None. Raise exception. + timestamp_string = self.get_string_timestamp(msg.timestamp) + value = "julianday(" + timestamp_string + ")" + self.append_to_insert_query("timestamp", value) + self.append_to_insert_query("timestamp", msg.timestamp) self.append_to_insert_query("peer_ip", msg.peer_ip) self.append_to_insert_query("peer_port", msg.peer_port) @@ -494,7 +508,12 @@ class SQLiteDatabaseAccess(DatabaseAccess): def add_status_message(self, msg): self.reset_query() self.append_to_insert_query("client_session_id", msg.client_session_id) - self.append_to_insert_query("timestamp", msg.timestamp) + + # TODO: Check msg.timestamp is not None. Raise exception. + timestamp_string = self.get_string_timestamp(msg.timestamp) + value = "julianday(" + timestamp_string + ")" + self.append_to_insert_query("timestamp", value) + self.append_to_insert_query("num_peers", msg.num_peers) self.append_to_insert_query("num_dht_peers", msg.num_dht_peers) self.append_to_insert_query("download_speed", msg.download_speed) @@ -513,7 +532,12 @@ class SQLiteDatabaseAccess(DatabaseAccess): def add_verbose_message(self, msg): self.reset_query() self.append_to_insert_query("client_session_id", msg.client_session_id) - self.append_to_insert_query("timestamp", msg.timestamp) + + # TODO: Check msg.timestamp is not None. Raise exception. + timestamp_string = self.get_string_timestamp(msg.timestamp) + value = "julianday(" + timestamp_string + ")" + self.append_to_insert_query("timestamp", value) + self.append_to_insert_query("transfer_direction_id", transfer_directions[msg.transfer_direction]) self.append_to_insert_query("peer_ip", msg.peer_ip)