Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie gebe ich Daten aus einer MySQL-Abfrage in einer Flask-App zurück?

Verwenden Sie den integrierten jsonify von Flask Funktion, da sie bereits erweitert wurde, um mit Datumsangaben zu arbeiten :

from Flask import jsonify

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

Die Daten werden als Objekt mit einem einzigen Schlüssel zurückgegeben (data ), die ein Array von Zeilen enthält (die entweder als Arrays oder als Objekte dargestellt werden, je nachdem, was fetchall ist gibt Zeilen zurück als).

Wenn Sie mehr Typen serialisieren müssen (wie in Ihrem Fall, erhalten Sie date zurück statt datetime Instanzen müssen Sie den json_encoder von Flask überschreiben -Eigenschaft mit einer Unterklasse von JSONEncoder das weiß, wie man mit Ihren Typen umgeht:

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

Und dann können Sie es auf Ihrem Flask einstellen Beispiel:

app.json_encoder = SpecializedJSONEncoder

Sie können jetzt mit date umgehen s sowie datetime s.