diff --git a/org/woehlke/covid19/europe/europe_model.py b/org/woehlke/covid19/europe/europe_model.py index ffc931561fc36177df8b75900af47e71b37cd2b6..ddd018baf572e2a62e624344f8c23a5ad168d15b 100644 --- a/org/woehlke/covid19/europe/europe_model.py +++ b/org/woehlke/covid19/europe/europe_model.py @@ -34,15 +34,18 @@ class EuropeDataImportTable(db.Model): def get_by_id(cls, other_id): return db.session.query(cls).filter(cls.id == other_id).one() + @classmethod + def get_date_rep(cls): + sql = "select distinct date_rep, year_week from europe_data_import order by year_week desc" + return db.session.execute(sql).all() + class EuropeDateReported(db.Model): __tablename__ = 'europe_date_reported' id = db.Column(db.Integer, primary_key=True) date_rep = db.Column(db.String(255), nullable=False) - day = db.Column(db.String(255), nullable=False) - month = db.Column(db.String(255), nullable=False) - year = db.Column(db.String(255), nullable=False) + year_week = db.Column(db.String(255), nullable=False) @classmethod def remove_all(cls): @@ -123,9 +126,9 @@ class EuropeData(db.Model): __tablename__ = 'europe_data' id = db.Column(db.Integer, primary_key=True) - deaths = db.Column(db.String(255), nullable=False) - cases = db.Column(db.String(255), nullable=False) - cases_cumulative_14days_per_100000 = db.Column(db.String(255), nullable=False) + deaths_weekly = db.Column(db.String(255), nullable=False) + cases_weekly = db.Column(db.String(255), nullable=False) + notification_rate_per_100000_population_14days = db.Column(db.String(255), nullable=False) europe_country_id = db.Column(db.Integer, db.ForeignKey('europe_country.id'), nullable=False) europe_country = db.relationship('EuropeCountry', lazy='joined') diff --git a/org/woehlke/covid19/europe/europe_service.py b/org/woehlke/covid19/europe/europe_service.py index 607f44e0dbe75cef121204561d1e8bd7e49441d2..12ac078339bb08b298796a8712c0196f99c8b62e 100644 --- a/org/woehlke/covid19/europe/europe_service.py +++ b/org/woehlke/covid19/europe/europe_service.py @@ -28,74 +28,6 @@ class EuropeService: app.logger.info("------------------------------------------------------------") app.logger.info(" Europe Service [ready] ") - def __download(self): - app.logger.info("------------------------------------------------------------") - app.logger.info(" download Europa [begin]") - app.logger.info("------------------------------------------------------------") - app.logger.info(" FILE: "+self.__src_europa_cvsfile_name+" <- "+self.__url_src_data) - app.logger.info("------------------------------------------------------------") - os.makedirs('data', exist_ok=True) - app.logger.info("------------------------------------------------------------") - try: - data_file = wget.download(self.__url_src_data, self.__src_europa_cvsfile_name) - #os.remove(self.__src_europa_cvsfile_name) - #os.renames(data_file, self.__src_europa_cvsfile_name) - app.logger.info("------------------------------------------------------------") - except Exception as error: - app.logger.warning(error) - app.logger.warning("------------------------------------------------------------") - finally: - app.logger.info(" download Europa [done]") - return self - - def __import(self): - app.logger.info(" import Europa [begin]") - app.logger.info("------------------------------------------------------------") - app.logger.info(" FILE: "+self.__src_europa_cvsfile_name) - app.logger.info(" TABLE: europe_data_import") - app.logger.info("------------------------------------------------------------") - try: - EuropeDataImportTable.remove_all() - with open(self.__src_europa_cvsfile_name, newline='') as csv_file: - file_reader = csv.DictReader(csv_file, delimiter=',', quotechar='"') - k = 0 - for row in file_reader: - o = EuropeDataImportTable( - date_rep=row['dateRep'], - day=row['day'], - month=row['month'], - year=row['year'], - cases=row['cases'], - deaths=row['deaths'], - countries_and_territories=row['countriesAndTerritories'], - geo_id=row['geoId'], - country_territory_code=row['countryterritoryCode'], - pop_data_2019=row['popData2019'], - continent_exp=row['continentExp'], - cumulative_number_for_14_days_of_covid19_cases_per_100000 - =row['Cumulative_number_for_14_days_of_COVID-19_cases_per_100000'] - ) - db.session.add(o) - if (k % 1000) == 0: - db.session.commit() - app.logger.info(" import Europa ... " + str(k) + " rows") - k = k + 1 - db.session.commit() - except KeyError as error: - app.logger.warning("KeyError: import Europa [begin]") - app.logger.warning(":::"+str(error)+":::") - for item_key, item_value in row.items(): - app.logger.warning(item_key+" : "+item_value) - app.logger.warning("KeyError: import Europa [end]") - except (Exception, psycopg2.DatabaseError) as error: - app.logger.warning("WARN: import Europa [begin]") - app.logger.warning(error) - app.logger.warning("WARN: import Europa [end]") - finally: - app.logger.info("------------------------------------------------------------") - app.logger.info(" import Europa [done]") - return self - def download(self): app.logger.info(" download [begin]") app.logger.info("------------------------------------------------------------") diff --git a/org/woehlke/covid19/europe/europe_service_update.py b/org/woehlke/covid19/europe/europe_service_update.py index 9074065ef3d076ddd28f8f5a1d76de8195305ec4..bda421df363ffd55814f42d04ac43c4b5c7cb6f3 100644 --- a/org/woehlke/covid19/europe/europe_service_update.py +++ b/org/woehlke/covid19/europe/europe_service_update.py @@ -1,6 +1,7 @@ import os import psycopg2 from database import db, app +from org.woehlke.covid19.europe.europe_model import EuropeDataImportTable class EuropeServiceUpdate: @@ -17,11 +18,21 @@ class EuropeServiceUpdate: app.logger.info("------------------------------------------------------------") app.logger.info(" Europe Service Update [ready] ") + def __update_date_reported(self): + EuropeDataImportTable.remove_all() + result = EuropeDataImportTable.get_date_rep() + for result_item in result.items: + my_date_rep = result_item['date_rep'] + year_week = result_item['year_week'] + app.logger.info("| "+my_date_rep+" | "+year_week+" |") + return self + def update_db(self): app.logger.info(" update_db [begin]") app.logger.info("------------------------------------------------------------") app.logger.info(" ... ") app.logger.info(" ... TBD ... ") + self.__update_date_reported() app.logger.info(" ... ") app.logger.info(" update_db [done]") app.logger.info("------------------------------------------------------------")