簡體   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