from database import Database class Tracking: def __init__(self, trackingnumber, service=None): self.trackingnumber = trackingnumber self.service = service @classmethod def from_database(cls, trackingnumber): with Database() as db: db.execute("SELECT service FROM tracking WHERE number=?", (trackingnumber,)) tracking = db.fetchone() if not tracking: raise ValueError("No tracking for tracking code %s in database" % trackingnumber) return cls(trackingnumber, tracking[0]) def to_database(self): with Database() as db: db.execute("INSERT INTO tracking VALUES (?, ?)", (self.trackingnumber, self.service)) db.commit() @classmethod def all(cls): trackings = list() with Database() as db: db.execute("SELECT number, service FROM tracking") while current := db.fetchone(): trackings.append(cls(current[0], current[1])) return trackings