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==="



转载于:https://www.cnblogs.com/gray13/p/10977375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值