我正在使用一个烧瓶应用程序,该应用程序查询我的sqlite数据库,并提取每年每个州的疾病病例数信息。下面的路由提取正确的数据,但是由于某些原因,将不会打印出请求中的字符串,例如“ Cases_2010”,“ Rate_2010等”。这是字符串本身还是串联的问题?它确实会打印“状态”字符串,之后不会再打印。
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine, func, desc
from flask import Flask, jsonify
import json
import numpy as np
import os
engine = create_engine("sqlite:///westnile_1.sqlite")
Base = automap_base()
Base.prepare(engine, reflect=True)
Disease_Data = Base.classes.disease_data
session = Session(engine)
app = Flask(__name__)
@app.route("/")
def home():
return(
f"Welcome to the West Nile Virus Case Report API <br>"
f"Available routes: <br>"
f"/api/v1.0/Cases_per_year_2010_2017 <br>"
f"/api/v1.0/case_totals <br>"
f"/api/v1.0/json_combined <br>")
@app.route("/api/v1.0/Cases_per_year_2010_2017")
def cases_2010_2017():
results_10 = session.query("State: " + Disease_Data.State, "Cases_2010: " + Disease_Data.Cases_2010, "Rate_2010: " + Disease_Data.Rate_2010,
"Cases_2011: " + Disease_Data.Cases_2011, "Rate_2011: " + Disease_Data.Rate_2011,
"Cases_2012: " + Disease_Data.Cases_2012, "Rate_2012: " + Disease_Data.Rate_2012,
"Cases_2013: " + Disease_Data.Cases_2013, "Rate_2013: " + Disease_Data.Rate_2013,
"Cases_2014: " + Disease_Data.Cases_2014, "Rate_2014: " + Disease_Data.Rate_2014,
"Cases_2015: " + Disease_Data.Cases_2015, "Rate_2015: " + Disease_Data.Rate_2015,
"Cases_2016: " + Disease_Data.Cases_2016, "Rate_2016: " + Disease_Data.Rate_2016,
"Cases_2017: " + Disease_Data.Cases_2017, "Rate_2017: " + Disease_Data.Rate_2017).all()
json2010 = json.dumps(results_10)
return jsonify(results_10)
答案 0 :(得分:0)
由于我没有有关ORM的任何信息,因此我假设Orm具有与表相同的确切列数。
results_10 = session.query(Disease_Data).all() # This will return the list of Disease_Data objects
json_list= []
for result in results_10:
temp_dict = result.__dict__
temp_dict.pop('_sa_instance_state',None)
json_list.append(temp_dict)
# OR
# temp_dict = dict(result)
# temp_dict.pop('_sa_instance_state',None) # removing unwanted key
# json_list.append(dict(result)) #Either of two should work
json2010 = json.dumps(json_list)
return jsonify(results_10)
我无法在本地测试,但应该给出一个主意。
如果您想保留数据格式:
column_list = Disease_Data.__table__.columns.keys()
results_10 = session.query(Disease_Data).all() # This will return the list of Disease_Data objects
json_list= []
for result in results_10:
temp_dict={}
for col in column_list:
temp_dict[col] = getattr(result,col)
json_list.append(temp_dict)
json2010 = json.dumps(json_list)
return jsonify(results_10)