当前位置 主页 > 服务器问题 > Linux/apache问题 >

    flask框架json数据的拿取和返回操作示例

    栏目:Linux/apache问题 时间:2019-12-07 16:47

    本文实例讲述了flask框架json数据的拿取和返回操作。分享给大家供大家参考,具体如下:

    json数据结构:以套票票网站的城市数据为例,拿到数据莫慌,

    1 先分析数据结构,有几个大的字段(‘returnCode'和‘retuenValue'字段,只有一个字段作为定义,另一个字段作为保留(无需处理)

    2 键表----> 拆分'returnValue‘确定数据库表结构,('A‘[]城市首字母表 和  城市具体信息字段{}表)

    3 将拿到的数据拆分插入到数据库中

    4 将数据库的数据以JSON 的形式返回给用户

    (a)拿到的数据:

    }
     "returnCode": "0",
     "returnValue": {
      "A": [
       {
        "id": 3643,
        "parentId": 0,
        "regionName": "阿坝",
        "cityCode": 513200,
        "pinYin": "ABA"
       },
       {
        "id": 3090,
        "parentId": 0,
        "regionName": "阿克苏",
        "cityCode": 652901,
        "pinYin": "AKESU"
       },
       {
        "id": 3632,
        "parentId": 0,
        "regionName": "阿拉善",
        "cityCode": 152900,
        "pinYin": "ALASHAN"
       },
       {
        "id": 899,
        "parentId": 0,
        "regionName": "安康",
        "cityCode": 610900,
        "pinYin": "ANKANG"
       },
       {
        "id": 196,
        "parentId": 0,
        "regionName": "安庆",
        "cityCode": 340800,
        "pinYin": "ANQING"
       },
       {
        "id": 758,
        "parentId": 0,
        "regionName": "鞍山",
        "cityCode": 210300,
        "pinYin": "ANSHAN"
       },
       {
        "id": 388,
        "parentId": 0,
        "regionName": "安顺",
        "cityCode": 520400,
        "pinYin": "ANSHUN"
       },
       {
        "id": 454,
        "parentId": 0,
        "regionName": "安阳",
        "cityCode": 410500,
        "pinYin": "ANYANG"
       }
      ],
    
    

    B....C....D....Z省略其他大写字母开头的城市,以A开头的城市名为例

    (b)表结构,建立外键models.py

    from App.ext import db
    #定义城市名大写字母类,在数据的最外层
    class Letter(db.Model):
      id = db.Column(db.Integer,primary_key =True,autoincrement=True)
      letter = db.Column(db.String(8),unique=True,nullable=False)
    #定义城市类,嵌套层
    class City(db.Model):
      id = db.Column(db.Integer,primary_key = True,autoincrement = True)
      parentId = db.Column(db.Integer,nullable = False,defaut=0)
      regionName = db.Column(db.String(30),nullable = False)
      cityCode = db.Column(db.Integer)
      pinYin = db.Column(db.String(128))
      #建立外键‘首字母'
      first_letter = db.Column(db.String(8),db.ForeignKey(Letter.letter))
    
    

    (c)addcities.py插入数据:

    from flask_restful.representations import json
    from sqlalchemy.dialects.mysql import pymysql
    def add_cities():
    #链接数据库
      db = pymysql.Connect(host= '10.0.118.135',user = 'root',password ='xxxxxxx',database = 'tpp6666',port = 3306)
      cursor = db.cursor()
      #读取拿到的数据,遍历数据
      with open('citylist.json')as cl:
        returnValue = json.load(cl).get('returnValue')
        for key in returnValue:
          for city in returnValue.get(key):
             db.begin()
             #插入数据,以每一个大写字母为一个字段插入,以字典的形式
             cursor.execute(
               'insert into city(id,parentId,regionName,cityCode,pinYin,first_letter) values({},{},"{}",{},"{}","{}");'.format(
                 city['id'], city['parentId'], city['regionName'], city['cityCode'], city['pinYin'], key))
             db.commit()
    if __name__ == '__main__':
      add_cities()