Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como retornar dados de uma consulta MySQL em um aplicativo Flask?


Use o jsonify integrado do Flask função, pois já está estendida para trabalhar com datas :
from Flask import jsonify

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

Os dados serão retornados como um objeto com uma única chave (data ) contendo uma matriz de linhas (que serão representadas como matrizes ou objetos dependendo do que fetchall retorna linhas como).

Se você precisar serializar mais tipos (como no seu caso, você está retornando date em vez de datetime instâncias, você precisará substituir o json_encoder do Flask propriedade com uma subclasse de JSONEncoder que sabe como lidar com seus tipos:
class SpecializedJSONEncoder(JSONEncoder):
    def default(o):
        if isinstance(o, date):
            return date.strftime("%Y-%m-%d")
        else:
            super(SpecializedJSONEncoder, self).default(o)

E então você pode configurá-lo em seu Flask instância:
app.json_encoder = SpecializedJSONEncoder

Agora você poderá lidar com date s, bem como datetime s.