加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何从Flask应用程序中的MySQL查询返回数据?

发布时间:2020-12-11 23:39:05 所属栏目:MySql教程 来源:网络整理
导读:我有以下代码: import flask as fkimport MySQLdbimport JSONEncoderclass SpecializedJSONEncoder(JSONEncoder): def default(o): if isinstance(o,date): return date.strftime("%Y-%m-%d") else: super(SpecializedJSONEncoder,self).default(o)app = fk

我有以下代码:

import flask as fk
import MySQLdb
import JSONEncoder


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

app = fk.Flask(__name__)
app.json_encoder = SpecializedJSONEncoder
app.debug = True

@app.route("/")
def home():
   return "Hello world"

@app.route("/temp")
def temp():
    db = MySQLdb.connect("localhost","root","","test")
    cur = db.cursor()
    query = "SELECT DATE(DTM),POM,ROUND(MIN(TMP),1) FROM dados_meteo WHERE POM = %s AND      DATE(DTM) >= %s AND DATE(DTM) <= %s"
    param = ("Faro","2013-12-01","2013-12-05")
    cur.execute(query,param)
    data = cur.fetchall()

    return data.json_encoder()

 if __name__ == "__main__":
    app.run()

返回的错误是:ImportError:没有名为JSONEncoder的模块 最佳答案 使用Flask的内置jsonify功能,因为它是already extended to work with dates:

from Flask import jsonify

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

数据将作为一个对象返回,其中包含一个包含行数组的单个键(数据)(这些行将表示为数组或对象,具体取决于fetchall返回行的行).

如果您需要序列化更多类型(在您的情况下,您将获得返回日期而不是datetime实例,则需要覆盖Flask的json_encoder属性,其子类为JSONEncoder,它知道如何处理您的类型:

class SpecializedJSONEncoder(JSONEncoder):
    def default(o):
        if isinstance(o,self).default(o)

然后你可以在你的Flask实例上设置它:

app.json_encoder = SpecializedJSONEncoder

您现在可以处理日期和日期时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读