一、区域选择模块
- 数据库建模
from App.ext import db
# 字母模型类
class Letter(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(2))
citys = db.relationship('City', backref='letter', lazy=True)
# 城市模型类
class City(db.Model):
# 注意,不是自增长
id = db.Column(db.Integer, primary_key=True)
regionName = db.Column(db.String(100))
cityCode = db.Column(db.String(10))
pinYin = db.Column(db.String(10))
c_letter = db.Column(db.Integer, db.ForeignKey(Letter.id))
- 数据导入(数据库操作)
# 从JSON到到数据库脚本 city-mysql.py
import json
import pymysql
# 链接数据库
db = pymysql.Connect(host="localhost", port=3306, user="root", password="123456", database="Tpp", charset="utf8")
# 数据库游标
cursor = db.cursor()
# 打开文件
with open('city.json', 'r') as f:
# json形式加载
city_collection = json.load(f)
# 获取所有的键
returnValue = city_collection.get('returnValue')
letters = returnValue.keys()
# 遍历插入到数据库中
for letter in letters:
# 游标,执行SQL语句 (注意values中的值是字符串)
db.begin()
cursor.execute("insert into letter(name) values('{}')".format(letter))
db.commit()
# 获取字母对应的主键
db.begin()
cursor.execute("select id from letter where name='{}';".format(letter))
db.commit()
result = cursor.fetchone()
letter_id = result[0]
# 获取key对应的value
citys = returnValue.get(letter)
for c_obj in citys:
# insert into city(regionName,cityCode,pinYin,c_letter)
regionName = c_obj.get('regionName')
cityCode = c_obj.get('cityCode')
pinYin = c_obj.get('pinYin')
db.begin()
cursor.execute("insert into city(regionName,cityCode,pinYin,c_letter) values('{}','{}','{}',{});".format(regionName,cityCode,pinYin,letter_id))
db.commit()
开始使用数据库时,驱动程序会发出一个BEGIN之后COMMIT,符合规范的pythonDBAPI始终以这种方式工作.
- 返回JSON数据
{
'status':200,
'msg': '获取城市列表数据成功',
"data":{
"A":[
{
"id"