sql >> Databáze >  >> RDS >> Mysql

Jak vrátit data z dotazu MySQL v aplikaci Flask?

Použijte vestavěný jsonify ve Flasku funkce, protože je již rozšířena o práci s daty :

from Flask import jsonify

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

Data budou vrácena jako objekt s jediným klíčem (data ) obsahující pole řádků (které budou buď reprezentovány jako pole nebo objekty v závislosti na tom, co fetchall vrátí řádky jako).

Pokud potřebujete serializovat více typů (jako ve vašem případě, vracíte se date spíše než datetime instancích, budete muset přepsat Flaskův json_encoder vlastnost s podtřídou JSONEncoder který ví, jak zacházet s vašimi typy:

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

A pak to můžete nastavit na Flask instance:

app.json_encoder = SpecializedJSONEncoder

Nyní budete moci zpracovat date s a také datetime s.




  1. dotaz mysql zobrazí více tabulek z jednoho sloupce ID

  2. Automatické generování souboru odpovědí

  3. Rozsah kolejnic - kde přesně odpovídá

  4. Co jsou SQL Operators a jak fungují?