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):
|
||||
__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)
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
Reference in a new issue