python学习之flask(一)

记录一下学习flask web框架并且使用mysql的过程 在flask里使用mysql需要用的库是flask_sqlalchemy,因为我是做前端的 所以就不用他的模板引擎了 就只练习一下接口

首先安装好mysql 并且创建一个music数据库

创建一个music.py 引入需要的东西
flask_cors 可以运行跨域请求

from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify,request
from flask_cors import *

创建flask实列
定义mysql的信息

app = Flask(__name__)
url = "127.0.0.1:3306"
user='root'
psw = '567984'
database = 'music'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://{}:{}@{}/{}'.format(user,psw,url,database) 
# 格式化字符串
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

练习一下
假设有一个歌单 歌单内容肯定有歌曲和歌手 就建两个表 一个存放歌曲 一个存放歌手
那么有些歌曲是某个歌手的作品,所以都是有关联的
定义模型
singers 和songs表

class Singer(db.Model): #继承db.model
    __tablename__ = 'singers'   #定义表名
    id = db.Column(db.Integer, primary_key=True) # primary_key 主键  生成自增的id  Integer整形    		
    name = db.Column(db.String(16), unique=True)  # #创建歌手的字段 unique 不能重复  

    def __init__(self, name,):
        self.name = name

    def __repr__(self):
        return '<Singer %s>' % self.name   #调用的时候方便打印查看

    def to_json(self):    # 格式化一下 返回给前端
        if self.belong_to is not None:
            data = []
            for k in self.belong_to:
                data.append({'song_id': k.id, 'song_name': k.name})

        return {
            'id': self.id,
            'name': self.name,
            'songs': data
        }


class Song(db.Model):
    __tablename__ = 'songs' #定义表名
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16))  #创建歌曲的字段
    singer_id = db.Column(db.Integer, db.ForeignKey('singers.id'))  #ForeignKey 关联外键 参数为 表名.字段
    belong_to = db.relationship('Singer', backref='belong_to', uselist=False)
'''
Relationship
第一个参数填写类名  也就是Singer类 表示了歌曲就和歌手存在关系
第二个参数backref,将向Singer类中添加一个belong_to的字段,(实际上在数据库里是没有的),反向引用。可以在这个字段里获取到Song的模型对象,uselist 参数忘记了
'''
    def __init__(self, name, singer_id):
        self.name = name
        self.singer_id = singer_id

    def __repr__(self):
        return '<Song %s>' % self.name

两个表已经建立好 接下来在flask里运行一下 我这里随便加了一些数据

if __name__ == "__main__":
    db.drop_all()   #先删除一下表在创建
    db.create_all()
    singer1 = Singer('薛之谦')
   '''
    db.session.add(singer1)
    db.session.commit() 
    单个添加
   '''
   	singer2 = Singer('华晨宇')
    singer3 = Singer('周杰伦')
    db.session.add_all([singer1,singer2,singer3])
    db.session.commit()
    data1 = Song('一荤一素',singer1.id)
    data2 = Song('告白气球',singer3.id)
    data3 = Song('好想爱这个世界啊',singer2.id)
    data4 = Song('烟火里的尘埃',singer2.id)
    db.session.add_all([data1,data2,data3,data4])
    db.session.commit()
    app.run(debug=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值