diff --git a/prule/db/__init__.py b/prule/db/__init__.py index bec05ea69ac5e266c42432ffb605b07b80a0e29a..8ed43c41189d1ee22031bf5d1e9328f74e88e2d3 100644 --- a/prule/db/__init__.py +++ b/prule/db/__init__.py @@ -7,7 +7,8 @@ import sqlite3 class ResultsDB: def __init__(self, path): - self.con = sqlite3.connect(path) + self.path = path + self.con = sqlite3.connect(path) self.rule_dict = None def close(self): if self.con != None: @@ -121,7 +122,8 @@ rulename TEXT res = cur.execute('SELECT DISTINCT cluster from jobs;') clusters = [] for c in res.fetchall(): - clusters.append(c[0]) + if c[0] != None: + clusters.append(c[0]) return clusters def db_get_users(self, cluster=None): @@ -132,7 +134,8 @@ rulename TEXT res = cur.execute('SELECT DISTINCT user FROM jobs WHERE cluster = ?;', [cluster]) users = [] for u in res.fetchall(): - users.append(u[0]) + if u[0] != None: + users.append(u[0]) return users def db_get_projects(self, cluster=None): @@ -143,26 +146,27 @@ rulename TEXT res = cur.execute('SELECT DISTINCT project FROM jobs WHERE cluster = ?;', [cluster]) projects = [] for p in res.fetchall(): - projects.append(p[0]) + if p[0] != None: + projects.append(p[0]) return projects def db_get_result(self, ccid): cur = self.con.cursor() cur.execute("SELECT * FROM jobs WHERE ccid = ?", [ccid]) res = cur.fetchall() - return res + return self.db_rows_to_dicts(res, 'jobs') def db_get_result_slurm(self, slurmid, cluster): cur = self.con.cursor() cur.execute("SELECT * FROM jobs WHERE jobid = ? AND cluster = ?", [slurmid, cluster]) res = cur.fetchall() - return res + return self.db_rows_to_dicts(res, 'jobs') def db_get_all_results(self): cur = self.con.cursor() cur.execute("SELECT * FROM jobs") res = cur.fetchall() - return res + return self.db_rows_to_dicts(res, 'jobs') def db_insert_failure(self, ccjobid): res = self.db_get_result(ccjobid) @@ -288,12 +292,17 @@ rulename TEXT res = cur.fetchall() return self.db_rows_to_dicts(res, 'jobs') - def __db_last_result(self): + def db_last_result(self): cur = self.con.cursor() cur.execute("SELECT * FROM jobs ORDER BY rowid DESC LIMIT 1;") res = cur.fetchall() return self.db_rows_to_dicts(res, 'jobs') + def db_first_result(self): + cur = self.con.cursor() + cur.execute("SELECT * FROM jobs ORDER BY rowid ASC LIMIT 1;") + res = cur.fetchall() + return self.db_rows_to_dicts(res, 'jobs') def db_rule_stats(self, cluster):