Flask SQLAlchemy数据库操作--增删改(2)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值