Mysql
 sql >> Database >  >> RDS >> Mysql

Come restituire i dati da una query MySQL in un'app Flask?

Usa jsonify integrato di Flask funzione, poiché è già esteso per lavorare con le date :

from Flask import jsonify

@app.route('/temp')
def temp():
    # Load database results
    # and then ...
    return jsonify(data=cur.fetchall())

I dati verranno restituiti come un oggetto con un'unica chiave (date ) contenente un array di righe (che sarà rappresentato come array o oggetti a seconda di cosa fetchall restituisce righe come).

Se devi serializzare più tipi (come nel tuo caso, stai tornando a date anziché datetime istanze, dovrai sovrascrivere json_encoder proprietà con una sottoclasse di JSONEncoder che sa come gestire i tuoi tipi:

class SpecializedJSONEncoder(JSONEncoder):
    def default(o):
        if isinstance(o, date):
            return date.strftime("%Y-%m-%d")
        else:
            super(SpecializedJSONEncoder, self).default(o)

E poi puoi impostarlo sul tuo Flask esempio:

app.json_encoder = SpecializedJSONEncoder

Ora sarai in grado di gestire date s così come datetime s.