+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-03(49)

2020-04(67)

2020-05(28)

2020-06(46)

2020-07(42)

python学习之flask(一)

发布于2020-02-27 10:38     阅读(665)     评论(0)     点赞(14)     收藏(2)


0

1

2

3

4

5

记录一下学习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 *
  • 1
  • 2
  • 3

创建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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

练习一下
假设有一个歌单 歌单内容肯定有歌曲和歌手 就建两个表 一个存放歌曲 一个存放歌手
那么有些歌曲是某个歌手的作品,所以都是有关联的
定义模型
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

两个表已经建立好 接下来在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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
发布了5 篇原创文章 · 获赞 2 · 访问量 56

0

1

2

3

4

5



所属网站分类: 技术文章 > 博客

作者:天青色等烟雨

链接: https://www.pythonheidong.com/blog/article/234978/8cce4a093e9ee2994788/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)