sql >> Database >  >> RDS >> Mysql

Hoe gegevens van een MySQL-query in een Flask-app retourneren?

Gebruik Flask's ingebouwde jsonify functie, aangezien het al is uitgebreid om met datums te werken :

from Flask import jsonify

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

De gegevens worden geretourneerd als een object met een enkele sleutel (data ) met een array van rijen (die ofwel worden weergegeven als arrays of objecten, afhankelijk van wat fetchall retourneert rijen als).

Als u meer typen moet serialiseren (zoals in uw geval, krijgt u date terug) in plaats van datetime instanties, moet u Flask's json_encoder overschrijven eigenschap met een subklasse van JSONEncoder die weet hoe hij met uw typen moet omgaan:

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

En dan kun je het instellen op je Flask voorbeeld:

app.json_encoder = SpecializedJSONEncoder

U kunt nu date verwerken s evenals datetime v.




  1. Is er iets analoog aan een split()-methode in mySql?

  2. Hoe kan ik voorouder-ID's krijgen voor willekeurige recursiediepte in één SQL-query?

  3. mysql REGEXP komt niet overeen

  4. Moet ik echt mysql_close() doen