Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment renvoyer les données d'une requête MySQL dans une application Flask ?

Utilisez le jsonify intégré de Flask fonction, car elle est déjà étendue pour fonctionner avec des dates :

from Flask import jsonify

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

Les données seront renvoyées sous la forme d'un objet avec une seule clé (data ) contenant un tableau de lignes (qui seront soit représentés comme des tableaux ou des objets selon ce que fetchall renvoie les lignes comme).

Si vous avez besoin de sérialiser plus de types (comme dans votre cas, vous obtenez en retour date plutôt que datetime instances, vous devrez remplacer le json_encoder de Flask propriété avec une sous-classe de JSONEncoder qui sait gérer vos types :

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

Et ensuite vous pouvez le mettre sur votre Flask instance :

app.json_encoder = SpecializedJSONEncoder

Vous allez maintenant pouvoir gérer date s ainsi que datetime s.