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.