繁体   English   中英

jsonify中的字符串错误(结果)-Flask,SQLAlchemy

[英]string error in jsonify(results) - Flask, SQLAlchemy

我正在使用一个烧瓶应用程序,该应用程序查询我的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)

results_10

sqlite数据库

更新返回的jsonify输出(json2010)

由于我没有有关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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM