1、增加数据
Flask中需要添加事务和提交事务
- 第一种保存数据
事务:原子性、一致性、隔离性、持久行
stu = student(
name="小红",
age=18
)
将数据放入缓存
db.session.add(stu)
将缓存中的数据提交
db.session.commit()
- 第二种保存数据
s = Student()
s.s_name = '小花'
s.s_age = 19
db.session.add(s)
db.session.commit()
- 批量添加数据
# 批量添加数据时可以使用add()、add_all()添加事务
db.session.add_all(stu)
db.session.commit()
stu是一个对象
add_list():
db.session.add_all(stus_list)
db.session.commit()
stus_list是一个列表,其每个元素都是一个对象
- 第一种
@app_blue.route('create_many_stu/',methods=['GET'])
def create_many_stu():
if request.method == 'GET':
stu = Student()
stus_list = []
for i in range(5):
stu = Student()
stu.s_name = '小花%s' % random.randrange(10, 1000)
stu.s_age = random.randint(10,20)
stus_list.append(stu)
db.session.add_all(stus_list)
db.session.commit()
# db.session.add(stu)
# db.session.commit
return '批量创建'
db.session.add_all(stus_list)
db.session.commit()
将列表中的数据统一添加到缓存区中,并提交
- 第二种
第二种:重写init
models中:
def __init__(self, name, age):
# 2,给对象赋值
self.s_name = name
self.s_age = age
views中:
@app_blue.route('create_many_stu_init/',methods=['GET'])
def create_many_stu():
if request.method == 'GET':
stus_list = []
for i in range(5):
stu = Student('小花%s' % random.randrange(10,1000), random.randint(10,20))
stus_list.append(stu)
db.session.add_all(stus_list)
db.session.commit()
# db.session.add(stu)
# db.session.commit
return '批量创建成功'
2、删除数据
格式:db.session.delete(对象)
db.session.commit()
注意:在修改数据(增删改)中如果使用commit()的话,只会修改本地缓存中的数据,数据库中的数据不会更新。
必须使用:db.session.commit()
- 第一种
students = Student.query.filter_by(s_id=2).first()
db.session.delete(students)
db.session.commit()
- 第二种
students = Student.query.filter_by(s_id=1).all()
db.session.delete(students[0])
db.session.commit()
3、修改数据
思路:获取到需要修改的对象,通过对象.属性的方式将属性重新赋值,然后使用commit提交事务
- 第一种
students = Student.query.filter_by(s_id=3).first()
students.s_name = '哈哈'
db.session.commit()
- 第二种
Student.query.filter_by(s_id=3).update({'s_name':'娃哈哈'})
db.session.commit()
补充:
模型
和Django的区别:
a. 模型中不定义数据库的表名:
在django中默认表名为:'应用appming_模型名小写'
在flask中默认的表名为:模型名的小写
b. 主键自增字段:
django中会默认创建自增的主键id
flask中需要手动创建自增的id: id = db.Column(db.Integer, primary_key=True, autoincrement=True)
c.查询所有数据的结果all()
在django结果中查询的结果是QuerySet
在flask中查询结果是List
d.查询满足条件的数据的结果,filter()
在django查询结果是QuerySet
在flask中查询结果是baseQuery objects