flask框架下读取mysql数据 转换成json格式API
研究了一天 因为需要从数据库拿数据然后转换成json的格式 expose出去为 API
发现一条数据是容易,两条以上我居然搞了这么久 好歹出来了 先贴一下 后面更新
mysql的操作 比较容易了https://pynative.com/python-mysql-select-query-to-fetch-data/
flask也比较容易 很多参考的
提取mysql的字段名反而是最少看到的 -- 》https://www.jianshu.com/p/057a784febb9
fields = cur.description # 获取查询结果中列的字段名,如果查询SQL中使用别名,此处显示别名。 cur.close() conn.close() # Main column_list = [] # 定义字段名的列表 for i in fields: column_list.append(i[0]) # 提取字段名,追加到列表中 #print column_list # 列表显示结果:['id', 'NAME', 'LOCAL', 'mobile', 'CreateTime']
select出来的list 和 这个字段名结合 组成一个dict
https://blog.csdn.net/weixin_41104835/article/details/89000096
for row in result: # 定义Python 字典 data = {} # 将row中的每个元素,追加到字典中。 for i in range(len(column_list)): data[column_list[i]] = row[i] # data[column_list[0]] = row[0] # # Python字段格式 和json字段格式转换 # data[column_list[1]] = str(row[1]) # data[column_list[2]] = str(row[2]) # data[column_list[3]] = str(row[3]) --------------------- 作者:野有蔓兮 来源:CSDN 原文:https://blog.csdn.net/weixin_41104835/article/details/89000096 版权声明:本文为博主原创文章,转载请附上博文链接!
参考了不少人家的代码
https://www.cnblogs.com/yufeihlf/p/6004124.html -- 但是这个header一个个的自己敲太麻烦
#将元组数据转换为列表类型,每个条数据元素为字典类型:[{'字段1':'字段1的值','字段2':'字段2的值',...,'字段N:字段N的值'},{第二条数据},...,{第N条数据}] for row in data: result = {} result['nm'] = row[0] result['dc'] = row[1] result['iu'] = row[2] result['it'] = str(row[3]) result['og'] = str(row[4]) result['mt'] = str(row[5]) result['pn'] = row[6] result['du'] = row[7] result['am'] = row[8] result['mc'] = str(row[9]) result['vc'] = str(row[10]) result['vn'] = row[11] result['sm'] = row[12] result['se'] = str(row[13]) result['ao'] = str(row[14]) jsonData.append(result) print u'转换为列表字典的原始数据:',jsonData
我的最终目的是 call http://127.0.0.1:5000/north/getSpace 的时候能够返回我的space的json 值
没有优化 不过能够完全实现我的要求了。。一天研究出来算不错了 水平有限
1 #!flask/bin/python 2 # coding=utf-8 3 from flask import Flask, jsonify 4 import json 5 import mysql.connector 6 from mysql.connector import Error 7 8 app = Flask(__name__) 9 10 11 12 try: 13 connection = mysql.connector.connect(host='127.0.0.1',database='bms_1',user='root',password='Pxxxx') 14 if connection.is_connected(): 15 SQL = "select id,guid,tag,path,name,node_type,space_type,parent_guid,time from space;" 16 cursor = connection.cursor() 17 cursor.execute(SQL) 18 result_list = cursor.fetchall() #return sql result 19 print("fetch result-->",type(result_list)) #is s list type, need to be a dict 20 21 fields_list = cursor.description # sql key name 22 print("fields result -->",type(fields_list)) 23 #print("header--->",fields) 24 cursor.close() 25 connection.close() 26 27 28 29 # main part 30 column_list = [] 31 for i in fields_list: 32 column_list.append(i[0]) 33 print("print final colume_list",column_list) 34 35 # print("colume list -->", column_list) 36 37 jsonData_list = [] 38 for row in result_list: 39 data_dict = {} 40 for i in range(len(column_list)): 41 data_dict[column_list[i]] = row[i] 42 #把data_dict 加入返回的jsonData_list列表中 43 jsonData_list.append(data_dict) 44 #print u'转换为列表字典的原始数据:', jsonData_list 45 46 47 @app.route('/north/getSpace', methods=['GET']) 48 def get_space(): 49 return jsonify({'space': jsonData_list}) 50 51 52 if __name__ == '__main__': 53 app.run(debug=True) 54 55 56 except Error as e: 57 print("Error while connection to Mysql", e) 58 finally: 59 connection.close() 60 print "==== mysql closed==="