0、前言:Python轻量级Web框架Flask(5)中生成的新模板就是包含数据库操作的Flask模板。
- 在pycharm中用flask写表结构时需用用到数据类型的定义如下:
- 下面总结一些常用到的数据类型:
1、Python轻量级Web框架Flask(5)中生成的新模板说明:
- 数据表的表结构一般在models.py当中,如果修改了表结构就要重新进行数据迁移,而表操作(数据表的增删改查)在views.py当中。
- 在models中的类对应的就是数据库表的表结构,类属性就是表的字段,对应于models中类的对象就是表中的一条数据。
模板修改:
db_uri = 'mysql+pymysql://root:123456@localhost:3306/flaskdb'
from .exts import db
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(30), unique=True, index=True)
age = db.Column(db.Integer, default=1)
- pycharm专业版配置mysql
- 注意:一定要在电脑的数据库中建一个数据库,之后所有的操作才能开展。学到目前这个阶段,对Flask的理解就是它能够把前端和后端给整合到一起。
2、Flask单表操作——添加/删除/修改:
- Flask单表的添加/删除/修改操作都是在模板的views中进行的
- views中代码如下:
from flask import Blueprint
from .models import *
blue = Blueprint('user', __name__)
@blue.route('/')
def index():
return 'index'
@blue.route('/useradd/')
def user_add():
users = []
for i in range(20,31):
u = User()
u.name = 'person' + str(i)
u.age = i
users.append(u)
try:
db.session.add_all(users)
db.session.commit()
except Exception as e:
db.session.rollback()
db.session.flush()
return 'add_fail:' + str(e)
return 'Ok!'
@blue.route('/userdel/')
def user_del():
u = User.query.first()
try:
db.session.delete(u)
db.session.commit()
except Exception as e:
db.session.rollback()
db.session.flush()
return 'del_fail:' + str(e)
return 'Ok!'
@blue.route('/userupdate/')
def user_update():
u = User.query.first()
try:
u.name = '王二蛋'
db.session.commit()
except Exception as e:
db.session.rollback()
db.session.flush()
return 'del_fail:' + str(e)
return 'Ok!'
- 修改完表单之后可以看到结果如下:一种是在workbench中看,一种是在pycharm中看
3、Flask单表操作——查询:
- 基础概念预览(在Flask中查询就不用写SQL语句了,它有自己的方法):
- Flask单表的查询操作是在模板的views中进行的
- views中代码如下:
from flask import Blueprint
from sqlalchemy import desc, and_, or_, not_
from .models import *
blue = Blueprint('user', __name__)
@blue.route('/')
def index():
return 'index'
@blue.route('/userget/')
def user_get():
users = User.query.all()
users = User.query.filter()
user = User.query.get(2)
'''
filter()类似于sql中的where,filter_by()只能用于等值操作(大于小于是没法用的)。
如果查询数据库中年龄等于25的数据
'''
users = User.query.filter(User.age==25)
users = User.query.filter_by(age=25)
users = User.query.filter(User.age>25)
return 'Ok!'
总结:Flask中操作数据库是通过类实现的,这种类继承自“模型”类,这种模型可以理解为数据库,而继承自模型的类对应数据库中的表结构(也就是说创建一个这种类,就是创建了一张新表的结构)。这种类对应的类属性就是表中的字段,根据这种类创建的一个对象,就是表中的一行数据(可以看下上面笔记中的给表中添加一条数据的操作来理解这句话)。