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

Hvordan returnerer man data fra en MySQL-forespørgsel i en Flask-app?

Brug Flasks indbyggede jsonify funktion, da den allerede er udvidet til at fungere med datoer :

from Flask import jsonify

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

Dataene vil blive returneret som et objekt med en enkelt nøgle (data ) indeholdende et array af rækker (som enten vil blive repræsenteret som arrays eller objekter afhængigt af hvad fetchall returnerer rækker som).

Hvis du har brug for at serialisere flere typer (som i dit tilfælde, får du date tilbage i stedet for datetime forekomster, skal du tilsidesætte Flasks json_encoder ejendom med en underklasse JSONEncoder der ved, hvordan man håndterer dine typer:

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

Og så kan du indstille det på din Flask eksempel:

app.json_encoder = SpecializedJSONEncoder

Du vil nu være i stand til at håndtere date s samt datetime s.




  1. UTC_DATE Eksempler – MySQL

  2. mysql fejl 1451

  3. Bedre måde at vælge alle kolonner fra første tabel og kun én kolonne fra anden tabel på indre joinforbindelse

  4. python MySQLDb indsæt med forberedte erklæringer