08-Flask之淘票票(前后端分离)

本文详细介绍了使用Flask构建淘票票应用的过程,涵盖区域选择、用户系统、注册、邮件插件、用户激活、密码安全、权限管理等模块,涉及到数据库操作、RESTful接口、权限装饰器及图片上传等内容,强调了前后端分离和移动端接口设计的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、区域选择模块

  • 数据库建模
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))

备注: https://dianying.taobao.com/cityAction.json?activityId&_ksTS=1531740557472_417&jsoncallback=jsonp418&action=cityAction&n_s=new&event_submit_doGetAllRegion=true

  • 数据导入(数据库操作)
# 从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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值