![](/img/trans.png)
[英]How to return whole object on data insert instead of id in mysql flask
[英]How to return data from a MySQL query in a Flask app?
我有以下代碼:
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
函數,因為它已經擴展為使用日期 :
from Flask import jsonify
@app.route('/temp')
def temp():
# Load database results
# and then ...
return jsonify(data=cur.fetchall())
數據將作為一個對象返回,其中包含一個包含行數組的單個鍵( data
)(這些行將表示為數組或對象,具體取決於fetchall
返回行的行)。
如果你需要序列化更多類型(在你的情況下,你得到的是date
而不是datetime
實例),你需要使用知道如何處理類型的JSONEncoder
的子類來覆蓋Flask的json_encoder
屬性:
class SpecializedJSONEncoder(JSONEncoder):
def default(o):
if isinstance(o, date):
return date.strftime("%Y-%m-%d")
else:
super(SpecializedJSONEncoder, self).default(o)
然后你可以在你的Flask
實例上設置它:
app.json_encoder = SpecializedJSONEncoder
您現在可以處理date
和datetime
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.