From ca2ff71b9a5b9d5efcdec8ec56c43c74f0818f4f Mon Sep 17 00:00:00 2001 From: gregor herrmann Date: Thu, 5 Jul 2018 20:19:20 +0200 Subject: [PATCH] first rather simple implementation of to_dict() for our Sensors object --- web/seepark_web.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/web/seepark_web.py b/web/seepark_web.py index de719ba..3ee9d94 100644 --- a/web/seepark_web.py +++ b/web/seepark_web.py @@ -7,7 +7,7 @@ import sys from collections import defaultdict from flask import Flask, render_template, jsonify, request import flask.json -from flask_sqlalchemy import SQLAlchemy +from flask_sqlalchemy import SQLAlchemy, inspect app_path = os.path.dirname(os.path.realpath(__file__)) @@ -52,6 +52,10 @@ db.reflect(app=app) class Sensors(db.Model): __tablename__ = 'sensors' + # https://stackoverflow.com/a/37350445 + def to_dict(self): + return {c.key: getattr(self, c.key) + for c in inspect(self).mapper.column_attrs} def select_sensordata(initial_where): query = Sensors.query.filter(initial_where) @@ -95,8 +99,9 @@ def select_sensordata(initial_where): c3result[row.sensor_id].append(row.value) dt = row.timestamp.strftime('%Y-%m-%d %H:%M:%S') c3result[row.sensor_id + '_x'].append(dt) - result = c3result - return result + return c3result + else: + return [row.to_dict() for row in result] def currentairtemperature(apikey, cityid): @@ -131,7 +136,7 @@ def sensorid(version, sensor_id): format=, optional. return result as returned by sqlalchemy (default) or formatted for c3.js """ result = select_sensordata(Sensors.sensor_id == sensor_id) - return jsonify([row._asdict() for row in result]) + return jsonify(result) @app.route('/api//sensor/type/') -- 2.47.3