flask 프레임 워 크 json 데이터 가 져 오기 및 되 돌려 주기 작업 예제

7531 단어 flaskjson 데이터
이 글 의 사례 는 fllask 프레임 워 크 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..........................................................................
(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()

(d)CityAPI.py 에서 데 이 터 를 읽 고 JSON 으로 되 돌려 줍 니 다.

from flask_restful import Resource, fields, marshal_with
from App.models import Letter, City
#      :
city_fields = {
  'id': fields.Integer,
  '   ': fields.Integer(attribute='parentId'),#   attribute
  '  ': fields.String(attribute='regionName'),
  '  ': fields.String(attribute='pinYin'),
  '    ': fields.Integer(attribute='cityCode'),
  '   ': fields.String(attribute='first_letter')
}
value_fields = {
  'A': fields.List(fields.Nested(city_fields)),
  'B': fields.List(fields.Nested(city_fields)),
  'C': fields.List(fields.Nested(city_fields)),
  'D': fields.List(fields.Nested(city_fields)),
  'E': fields.List(fields.Nested(city_fields)),
  'F': fields.List(fields.Nested(city_fields)),
  'G': fields.List(fields.Nested(city_fields)),
  'H': fields.List(fields.Nested(city_fields)),
  'J': fields.List(fields.Nested(city_fields)),
  'K': fields.List(fields.Nested(city_fields)),
  'L': fields.List(fields.Nested(city_fields)),
  'M': fields.List(fields.Nested(city_fields)),
  'N': fields.List(fields.Nested(city_fields)),
  'P': fields.List(fields.Nested(city_fields)),
  'Q': fields.List(fields.Nested(city_fields)),
  'R': fields.List(fields.Nested(city_fields)),
  'S': fields.List(fields.Nested(city_fields)),
  'T': fields.List(fields.Nested(city_fields)),
  'W': fields.List(fields.Nested(city_fields)),
  'X': fields.List(fields.Nested(city_fields)),
  'Y': fields.List(fields.Nested(city_fields)),
  'Z': fields.List(fields.Nested(city_fields)),
}
result_fields = {
  'returnCode': fields.Integer,
  'returnValue': fields.Nested(value_fields)
}
#          :
@marshal_with flask   Json      ,
Django 에서 json 서열 화 는 json.dumps()입 니 다.

class CityResrouce(Resource):
  @marshal_with(result_fields)
  def get(self):
    #          {},    
    returnValue = {}
    #         
    letters = Letter.query.all()
    for letter in letters:
      #                    
      # filter        BaseQuery  。
      #       BaseQuery  ,    SQL  
      #       BaseQuery      ,  all()      BaseQuery      
      cities = City.query.filter(City.first_letter == letter.letter)
      # dict = {letter.letter: cities}
      # print(dict)
      returnValue[letter.letter] = cities.all()
    return {'returnCode': 0, 'returnValue': returnValue}

 
(d)api__init__.py:

from flask_restful import Api
from App.Apis.CityAPI import CityResrouce
from App.Apis.UserAPI import UerResource
api = Api()
def init_api(app):
  api.init_app(app=app)
api.add_resource(CityResrouce, '/cities/')

본 고 에서 말 한 것 이 flask 프레임 워 크 를 바탕 으로 하 는 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기