Użyj wbudowanej funkcji Flask jsonify
funkcja, ponieważ jest już rozszerzona do pracy z datami
:
from Flask import jsonify
@app.route('/temp')
def temp():
# Load database results
# and then ...
return jsonify(data=cur.fetchall())
Dane zostaną zwrócone jako obiekt z jednym kluczem (date
) zawierający tablicę wierszy (która będzie reprezentowana jako tablice lub obiekty w zależności od tego, co fetchall
zwraca wiersze jako).
Jeśli potrzebujesz serializować więcej typów (tak jak w twoim przypadku, otrzymujesz z powrotem date
zamiast datetime
wystąpień, będziesz musiał zastąpić json_encoder
Flask
właściwość z podklasą JSONEncoder
który wie, jak radzić sobie z twoimi typami:
class SpecializedJSONEncoder(JSONEncoder):
def default(o):
if isinstance(o, date):
return date.strftime("%Y-%m-%d")
else:
super(SpecializedJSONEncoder, self).default(o)
A potem możesz ustawić go na swojej Flask
przykład:
app.json_encoder = SpecializedJSONEncoder
Będziesz mógł teraz obsługiwać date
s oraz datetime
s.