From 392991ca2a2343890242032938b6140ef611e5ce Mon Sep 17 00:00:00 2001 From: thomaswoehlke <thomas.woehlke@gmail.com> Date: Wed, 26 May 2021 18:37:15 +0200 Subject: [PATCH] Refactoring: vaccination --- .../blueprints/data_rki/rki_model.py | 19 +++-- .../blueprints/data_rki/rki_service_update.py | 72 ++++++++----------- 2 files changed, 39 insertions(+), 52 deletions(-) diff --git a/src/flask_covid19/blueprints/data_rki/rki_model.py b/src/flask_covid19/blueprints/data_rki/rki_model.py index 2ac83217..4b5c7a51 100644 --- a/src/flask_covid19/blueprints/data_rki/rki_model.py +++ b/src/flask_covid19/blueprints/data_rki/rki_model.py @@ -195,10 +195,6 @@ class RkiAltersgruppe(BlueprintEntity): processed_update = db.Column(db.Boolean, nullable=False) processed_full_update = db.Column(db.Boolean, nullable=False) altersgruppe = db.Column(db.String(255), nullable=False) - datas = db.relationship( - 'RkiData', - secondary=association_table_rki_to_altersgruppe, - back_populates="altersgruppen") @classmethod def get_all_as_page(cls, page: int): @@ -225,8 +221,14 @@ class RkiAltersgruppe(BlueprintEntity): class RkiData(BlueprintFactTable): __tablename__ = 'rki' __mapper_args__ = {'concrete': True} + __table_args__ = ( + db.UniqueConstraint('fid', 'geschlecht', 'date_reported_id', 'datenstand_id', 'location_id', + 'ref_datum_id', 'altersgruppe_id', name="uix_rki"), + ) id = db.Column(db.Integer, primary_key=True) + processed_update = db.Column(db.Boolean, nullable=False) + processed_full_update = db.Column(db.Boolean, nullable=False) # date_reported_id = db.Column(db.Integer, db.ForeignKey('rki_date_reported.id'), nullable=False) date_reported = db.relationship( @@ -240,17 +242,14 @@ class RkiData(BlueprintFactTable): lazy='joined', cascade='save-update', order_by='asc(RkiLandkreis.location)') - processed_update = db.Column(db.Boolean, nullable=False) - processed_full_update = db.Column(db.Boolean, nullable=False) # fid = db.Column(db.String(255), nullable=False) # altersgruppe = db.Column(db.String(255), nullable=False) - altersgruppen = db.relationship( + altersgruppe_id = db.Column(db.Integer, db.ForeignKey('rki_altersgruppe.id'), nullable=False) + altersgruppe = db.relationship( 'RkiAltersgruppe', - secondary=association_table_rki_to_altersgruppe, lazy='joined', - back_populates="datas", - cascade='save-update, delete', + cascade='save-update', order_by='desc(RkiAltersgruppe.altersgruppe)') neuer_fall = db.Column(db.String(255), nullable=False) geschlecht = db.Column(db.String(255), nullable=False) diff --git a/src/flask_covid19/blueprints/data_rki/rki_service_update.py b/src/flask_covid19/blueprints/data_rki/rki_service_update.py index 00e6045b..99c9911a 100644 --- a/src/flask_covid19/blueprints/data_rki/rki_service_update.py +++ b/src/flask_covid19/blueprints/data_rki/rki_service_update.py @@ -189,9 +189,6 @@ class RkiServiceUpdateFull(RkiServiceUpdateBase): i = 0 d = 0 k = 0 - written_data_rows = 0 - hold_location = "" - hold_meldedatum = "" dict_locations = RkiLandkreis.find_all_as_dict() dict_altersgruppen = RkiAltersgruppe.find_all_as_dict() dict_ref_datum = RkiRefDatum.find_all_as_dict() @@ -216,51 +213,42 @@ class RkiServiceUpdateFull(RkiServiceUpdateBase): key_altersgruppen = o_import.altersgruppe my_altersgruppe = dict_altersgruppen[key_altersgruppen] my_landkreis = dict_locations[key_location] - if hold_location == key_location and hold_meldedatum == my_meldedatum_datum: - o = RkiData.find_by_date_reported_and_location(date_reported=my_meldedatum, location=my_landkreis) - o.altersgruppen.append(my_altersgruppe) - else: - hold_location = key_location - hold_meldedatum = my_meldedatum_datum - key_datenstand = o_import.datenstand - key_ref_datum = o_import.ref_datum - my_datenstand = dict_datenstand[key_datenstand] - my_ref_datum = dict_ref_datum[key_ref_datum] - # app.logger.info(str(my_landkreis)) - o = RkiData( - date_reported=my_meldedatum, - datenstand=my_datenstand, - location=my_landkreis, - ref_datum=my_ref_datum, - fid=o_import.fid, - geschlecht=o_import.geschlecht, - anzahl_fall=o_import.anzahl_fall, - anzahl_todesfall=o_import.anzahl_todesfall, - neuer_fall=o_import.neuer_fall, - neuer_todesfall=o_import.neuer_todesfall, - neu_genesen=o_import.neu_genesen, - anzahl_genesen=o_import.anzahl_genesen, - ist_erkrankungsbeginn=o_import.ist_erkrankungsbeginn, - altersgruppe2=o_import.altersgruppe2, - processed_update=False, - processed_full_update=True, - ) - o.altersgruppen.append(my_altersgruppe) - db.session.add(o) - written_data_rows += 1 - k += 1 + key_datenstand = o_import.datenstand + key_ref_datum = o_import.ref_datum + my_datenstand = dict_datenstand[key_datenstand] + my_ref_datum = dict_ref_datum[key_ref_datum] + # app.logger.info(str(my_landkreis)) + o = RkiData( + date_reported=my_meldedatum, + datenstand=my_datenstand, + location=my_landkreis, + ref_datum=my_ref_datum, + altersgruppe=my_altersgruppe, + fid=o_import.fid, + geschlecht=o_import.geschlecht, + # + anzahl_fall=o_import.anzahl_fall, + anzahl_todesfall=o_import.anzahl_todesfall, + neuer_fall=o_import.neuer_fall, + neuer_todesfall=o_import.neuer_todesfall, + neu_genesen=o_import.neu_genesen, + anzahl_genesen=o_import.anzahl_genesen, + ist_erkrankungsbeginn=o_import.ist_erkrankungsbeginn, + altersgruppe2=o_import.altersgruppe2, + processed_update=False, + processed_full_update=True, + ) + db.session.add(o) + k += 1 i += 1 d += 1 if d % 7 == 0: db.session.commit() - s1 = str(i) - s2 = str(my_meldedatum) - s3 = str(k) - s4 = str(written_data_rows) - app.logger.info(" full update RKI data ... " + s1 + " rows ... " + s2 + " (" + s3 + " / " + s4 + ")") + sd = str(my_meldedatum) + app.logger.info(" full update RKI data ... " + str(i) + " rows ... " + sd + " (" + str(k) + ")") k = 0 db.session.commit() - app.logger.info(" full update RKI data ... "+str(i)+" total rows") + app.logger.info(" full update RKI data ... " + str(i) + " total rows") app.logger.info("") app.logger.info(" RkiServiceUpdateFull.__full_update_data [done]") app.logger.info("------------------------------------------------------------") -- GitLab