在上一篇文章中介绍了flask连接数据库。这次介绍数据库的增删改查操作
查询数据
① 查询所有
② 按条件查询
方式一、不需要写创建表的类,用‘=’号,filter_by(精确查找)
方式二、注意字段名前要写创建表的类,一定要用‘==’号,filter(模糊查找)
③ 查询第一个
④ 通过主键ID查询
如果主键存在,返回一个对象
如果主键不存在,没有返回值
⑤ 查询姓名以老开头的同学
⑥ 查询名字以‘王’结尾的同学
⑦ Not_查询
查询名字不等于‘xiaowang’的同学,not_()逻辑非,需要导包
方式一:
方式二:
⑧ In查询
⑨ 多条件查询
or_(逻辑或)和and_(逻辑与)Or查询 :
And查询:
⑩ 分页查询,查询第二页,每页3条数据
更新数据
更新一个字段:更新操作一定要commit
删除数据
删除id为2的用户,删除也要commit
外键查询
模型类
class Role(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20), unique=True)
# 在主表添加关系,与用户表产生关系,代表整个角色下的所有用户
users = db.relationship('User', backref='role', lazy='dynamic')
# backref='role'反向作用
# lazy='dynamic'用到的时候关联加载
# lazy='subquery'加载完对象后立即加载
def __repr__(self):
return self.name
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20), unique=True)
email = db.Column(db.String(30), nullable=True)
is_delete = db.Column(db.Boolean, default=False)
# 添加外键
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
def __repr__(self):
return self.name
① 查询角色ID为2的所有用户
② 查询ID为2的用户的角色
添加数据
① 添加一条数据
② 添加多条数据