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



  • 相关阅读:
    EF6 AddOrUpdate之后,数据没有改变而是新增了一条数据解决办法
    php多文件上传数组 转换
    windows svn 上传后 自动部署 到web目录下
    一组实用网址
    apache 虚拟ip
    ThinkPHP 空方法 显示
    thinkphp 创建子应用
    Zend Studio 9.0.4 新建项目
    鼠标悬浮停留三秒 显示大图
    mysql GROUP BY 与 ORDER BY 查询不是最新记录
  • 原文地址:https://www.cnblogs.com/gray13/p/10977375.html
Copyright © 2020-2023  润新知