flask框架下讀取mysql數據 轉換成json格式API

研究了一天 由於須要從數據庫拿數據而後轉換成json的格式 expose出去爲 APIhtml

發現一條數據是容易,兩條以上我竟然搞了這麼久 好歹出來了 先貼一下 後面更新node

mysql的操做 比較容易了https://pynative.com/python-mysql-select-query-to-fetch-data/python

flask也比較容易 不少參考的mysql

提取mysql的字段名反而是最少看到的 -- 》https://www.jianshu.com/p/057a784febb9sql

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/89000096json

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 
版權聲明:本文爲博主原創文章,轉載請附上博文連接!

 

參考了很多人家的代碼 flask

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 值app

沒有優化 不過可以徹底實現個人要求了。。一天研究出來算不錯了 水平有限fetch

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

相關文章
相關標籤/搜索