本文實(shí)例講述了flask框架json數(shù)據(jù)的拿取和返回操作。分享給大家供大家參考,具體如下:
json數(shù)據(jù)結(jié)構(gòu):以套票票網(wǎng)站的城市數(shù)據(jù)為例,拿到數(shù)據(jù)莫慌,
1 先分析數(shù)據(jù)結(jié)構(gòu),有幾個(gè)大的字段(‘returnCode'和‘retuenValue'字段,只有一個(gè)字段作為定義,另一個(gè)字段作為保留(無需處理)
2 鍵表----> 拆分'returnValue‘確定數(shù)據(jù)庫表結(jié)構(gòu),('A‘[]城市首字母表 和 城市具體信息字段{}表)
3 將拿到的數(shù)據(jù)拆分插入到數(shù)據(jù)庫中
4 將數(shù)據(jù)庫的數(shù)據(jù)以JSON 的形式返回給用戶
(a)拿到的數(shù)據(jù):
} "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)表結(jié)構(gòu),建立外鍵models.py
from App.ext import db#定義城市名大寫字母類,在數(shù)據(jù)的最外層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插入數(shù)據(jù):
from flask_restful.representations import jsonfrom sqlalchemy.dialects.mysql import pymysqldef add_cities():#鏈接數(shù)據(jù)庫 db = pymysql.Connect(host= '10.0.118.135',user = 'root',password ='xxxxxxx',database = 'tpp6666',port = 3306) cursor = db.cursor() #讀取拿到的數(shù)據(jù),遍歷數(shù)據(jù) with open('citylist.json')as cl: returnValue = json.load(cl).get('returnValue') for key in returnValue: for city in returnValue.get(key): db.begin() #插入數(shù)據(jù),以每一個(gè)大寫字母為一個(gè)字段插入,以字典的形式 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()
新聞熱點(diǎn)
疑難解答
圖片精選