Fixing to handle N/A entries, extra column. Adding exceptions for query to top n for countries.

This commit is contained in:
Alex Huddleston 2020-04-15 17:17:24 -05:00
parent 05ee017260
commit f587c6ca4c
3 changed files with 27 additions and 16 deletions

View file

@ -7,8 +7,8 @@ Base = declarative_base()
class covidData(Base):
__tablename__ = 'data'
selection = Column(String(32), primary_key=True)
selection_original = Column(String(32))
selection = Column(String(32))
selection_original = Column(String(32), primary_key=True)
total_cases = Column(Integer)
new_cases = Column(Integer)
total_deaths = Column(Integer)

View file

@ -4,19 +4,25 @@ from lib.covidData import covidData
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(
',', '').replace('+', '') for d in import_data]
output_dict = {
'selection': selection.upper(),
'selection_original': selection
'selection': selection.upper().strip().replace('\n', ''),
'selection_original': selection.strip().replace('\n', '')
}
for i in range(2, len(columns)):
if(formatted_import_data[i - 1] and not formatted_import_data[i - 1] == ''):
if(i == len(columns) - 1):
output_dict[columns[i]] = formatted_import_data[i - 1]
for i in range(1, len(columns)):
if(formatted_import_data[i] and not formatted_import_data[i] == ''):
if(i >= len(columns) - 2):
output_dict[columns[i]] = formatted_import_data[i]
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
@ -27,7 +33,7 @@ def get_data_dict(query_data):
'selection_original': query_data.selection_original
}
for i in range(2, len(columns)):
if(i == len(columns) - 1):
if(i >= len(columns) - 2):
output_dict[columns[i]] = query_data.__getattribute__(
columns[i])
else:
@ -57,6 +63,10 @@ def get_data(session, selection):
def get_top_n_rows(session, num):
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()
return [get_data_dict(n) for n in top_n_rows]

View file

@ -12,6 +12,8 @@ sa_data_url = 'https://www.sanantonio.gov/health/news/alerts/coronavirus'
def format_parse_int(num):
if(num < 0):
return 'N/A'
output = ''
count = 0
while not num == 0:
@ -65,14 +67,13 @@ def get_covid_data(selection):
def get_top_data(number):
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()
output = ''
count = 0
for row in top_n_rows:
if(count > 1):
output += f'# {count - 1}\n{row["selection_original"]}: {format_parse_int(row["total_cases"])}'
if(not count == number + 1):
output += f'# {count + 1}\n{row["selection_original"]}: {format_parse_int(row["total_cases"])}'
if(not count == number):
output += '\n'
count += 1
return output