Fixing to handle N/A entries, extra column. Adding exceptions for query to top n for countries.
This commit is contained in:
parent
05ee017260
commit
f587c6ca4c
3 changed files with 27 additions and 16 deletions
|
@ -7,8 +7,8 @@ Base = declarative_base()
|
||||||
|
|
||||||
class covidData(Base):
|
class covidData(Base):
|
||||||
__tablename__ = 'data'
|
__tablename__ = 'data'
|
||||||
selection = Column(String(32), primary_key=True)
|
selection = Column(String(32))
|
||||||
selection_original = Column(String(32))
|
selection_original = Column(String(32), primary_key=True)
|
||||||
total_cases = Column(Integer)
|
total_cases = Column(Integer)
|
||||||
new_cases = Column(Integer)
|
new_cases = Column(Integer)
|
||||||
total_deaths = Column(Integer)
|
total_deaths = Column(Integer)
|
||||||
|
|
|
@ -4,19 +4,25 @@ from lib.covidData import covidData
|
||||||
|
|
||||||
|
|
||||||
def set_data_dict(selection, import_data):
|
def set_data_dict(selection, import_data):
|
||||||
columns = [i for i in covidData.__dict__.keys() if i[:1] != '_']
|
columns = [i for i in covidData.__dict__.keys() if i[:1] != '_'][1:]
|
||||||
formatted_import_data = [d.strip().replace(
|
formatted_import_data = [d.strip().replace(
|
||||||
',', '').replace('+', '') for d in import_data]
|
',', '').replace('+', '') for d in import_data]
|
||||||
output_dict = {
|
output_dict = {
|
||||||
'selection': selection.upper(),
|
'selection': selection.upper().strip().replace('\n', ''),
|
||||||
'selection_original': selection
|
'selection_original': selection.strip().replace('\n', '')
|
||||||
}
|
}
|
||||||
for i in range(2, len(columns)):
|
for i in range(1, len(columns)):
|
||||||
if(formatted_import_data[i - 1] and not formatted_import_data[i - 1] == ''):
|
if(formatted_import_data[i] and not formatted_import_data[i] == ''):
|
||||||
if(i == len(columns) - 1):
|
if(i >= len(columns) - 2):
|
||||||
output_dict[columns[i]] = formatted_import_data[i - 1]
|
output_dict[columns[i]] = formatted_import_data[i]
|
||||||
else:
|
else:
|
||||||
output_dict[columns[i]] = int(formatted_import_data[i - 1])
|
try:
|
||||||
|
output_dict[columns[i]] = int(formatted_import_data[i])
|
||||||
|
except:
|
||||||
|
output_dict[columns[i]] = -1
|
||||||
|
else:
|
||||||
|
output_dict[columns[i]] = -1
|
||||||
|
print(output_dict)
|
||||||
return output_dict
|
return output_dict
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,7 +33,7 @@ def get_data_dict(query_data):
|
||||||
'selection_original': query_data.selection_original
|
'selection_original': query_data.selection_original
|
||||||
}
|
}
|
||||||
for i in range(2, len(columns)):
|
for i in range(2, len(columns)):
|
||||||
if(i == len(columns) - 1):
|
if(i >= len(columns) - 2):
|
||||||
output_dict[columns[i]] = query_data.__getattribute__(
|
output_dict[columns[i]] = query_data.__getattribute__(
|
||||||
columns[i])
|
columns[i])
|
||||||
else:
|
else:
|
||||||
|
@ -57,6 +63,10 @@ def get_data(session, selection):
|
||||||
|
|
||||||
def get_top_n_rows(session, num):
|
def get_top_n_rows(session, num):
|
||||||
print(f'Getting top {num} rows.')
|
print(f'Getting top {num} rows.')
|
||||||
top_n_rows = session.query(covidData).order_by(
|
filter_selections = ['WORLD', 'TOTAL', 'EUROPE', 'NORTH AMERICA', 'ASIA', 'SOUTH AMERICA', 'AFRICA', 'OCEANIA']
|
||||||
|
exception_selection = session.query(covidData).filter(
|
||||||
|
covidData.selection.in_(filter_selections))
|
||||||
|
exception_null = session.query(covidData).filter(covidData.total_cases == -1)
|
||||||
|
top_n_rows = session.query(covidData).except_all(exception_null, exception_selection).order_by(
|
||||||
covidData.total_cases.desc()).limit(num).all()
|
covidData.total_cases.desc()).limit(num).all()
|
||||||
return [get_data_dict(n) for n in top_n_rows]
|
return [get_data_dict(n) for n in top_n_rows]
|
||||||
|
|
|
@ -12,6 +12,8 @@ sa_data_url = 'https://www.sanantonio.gov/health/news/alerts/coronavirus'
|
||||||
|
|
||||||
|
|
||||||
def format_parse_int(num):
|
def format_parse_int(num):
|
||||||
|
if(num < 0):
|
||||||
|
return 'N/A'
|
||||||
output = ''
|
output = ''
|
||||||
count = 0
|
count = 0
|
||||||
while not num == 0:
|
while not num == 0:
|
||||||
|
@ -65,14 +67,13 @@ def get_covid_data(selection):
|
||||||
|
|
||||||
def get_top_data(number):
|
def get_top_data(number):
|
||||||
session = create_session(Base)
|
session = create_session(Base)
|
||||||
top_n_rows = get_top_n_rows(session, number + 2)
|
top_n_rows = get_top_n_rows(session, number)
|
||||||
session.close()
|
session.close()
|
||||||
output = ''
|
output = ''
|
||||||
count = 0
|
count = 0
|
||||||
for row in top_n_rows:
|
for row in top_n_rows:
|
||||||
if(count > 1):
|
output += f'# {count + 1}\n{row["selection_original"]}: {format_parse_int(row["total_cases"])}'
|
||||||
output += f'# {count - 1}\n{row["selection_original"]}: {format_parse_int(row["total_cases"])}'
|
if(not count == number):
|
||||||
if(not count == number + 1):
|
|
||||||
output += '\n'
|
output += '\n'
|
||||||
count += 1
|
count += 1
|
||||||
return output
|
return output
|
||||||
|
|
Reference in a new issue