Flask数据的增删改查(CRUD)_flask删除数据自动更新

第一种:filter,结果是baseQuery objects,
过滤条件的格式:对象.属性==值
studnets = Student.query.filter(Student.id==1)
第二种:filter_by,结果是baseQuery objects,可以进行遍历
students = Student.query.filter_by(id=1)
第三种:原生sql查询id=1的信息,结果是一个可以遍历的对象
sql = 'select * from student where id=1;'
students = db.session.execute(sql)

模糊查询:
语法:filter(模型名.属性.运算符(‘xx’))
运算符:
contains:包含
startswith:以什么开始
endswith:以什么结束
in_:在范围内
like:模糊
gt: 大于
ge:大于等于
lt:小于
le:小于等于

例子:

模糊查询,查询姓名中包含小花的学生信息

django中filter(s_name__contains=‘小花’)

students = Student.query.filter(Student.s_name.contains('小花'))

以什么开始

students = Student.query.filter(Student.s_name.startswith('小'))

以什么结束

students = Student.query.filter(Student.s_name.endswith('1'))

查询年龄大于等于16的学生信息

students = Student.query.filter(Student.s_age.__gt__(15))

查询id在10到20之间的学生的学生信息

students = Student.query.filter(Student.s_age.in_([10,11,12]))

查询年龄小于17的学生信息

Student.query.filter(Student.s_age < 17)
students = Student.query.filter(Student.s_age.__lt__(17))

模糊查询,使用like,查询姓名中第二位为花的学生信息

like ‘_花%’,_代表必须有一个数据,%任何数据

students = Student.query.filter(Student.s_name.like('_花%'))

筛选:

offset()
# 跳过3个数据
stus = Student.query.offset(3)

limit()
# 跳过3个数据,查询5个信息
stus = Student.query.offset(3).limit(5)

order_by()
# 按照id降序,升序
students = Student.query.order_by(‘id’)
students = Student.query.order_by(‘-id’)

students = Student.query.order_by(desc('id'))
students = Student.query.order_by(asc('id'))

students = Student.query.order_by('id desc')
students = Student.query.order_by('id asc')

get()
#使用get,获取id=1的学生对象,get()默认接收id
# 拿不到值不会报错,返回空
students = Student.query.get(4)

first()
# 获取年龄最大的一个
stus = Student.query.order_by(‘-s_age’).first()

逻辑运算

and_
filter(and_(条件),条件…)

或
	or_
	filter(or_(条件),条件…)

非
	not_
	filter(not_(条件),条件…)

例子:
and_
students = Student.query.filter(Student.s_age==16,
Student.s_name.contains(‘花’))

students = Student.query.filter(and_(Student.s_age==16,
                                Student.s_name.contains('花')))

not_
students = Student.query.filter(or_(Student.s_age16,
Student.s_name.contains(‘花’)))
or_
students = Student.query.filter(not_(Student.s_age
16),
Student.s_name.contains(‘花’))

注意:

  1. fliter和filter_by的结果可遍历
  2. 可以通过对其结果使用all()方法将其转换成一个列表或者first()转换成objects对象。
  3. all()获得的是列表,列表没有first()方法
  4. fliter和filter_by有flrst()方法,没有last方法

数据的添加


在flask中修改数据后需要添加事务和提交事务



事务: 完整,一致,持久,原子
第一种:保存数据
将数据放入缓存
db.session.add(stu)
将缓存中的数据提交
db.session.commit()


在学生表中添加数据



@blue.route(‘/createstu/’)
def create_stu():
s = Student()
s.s_name = ‘小花’
s.s_age = 19

db.session.add(s)
db.session.commit()

return '添加成功'

提交事务,使用commit提交我们的添加数据的操作


批量创建数据



批量添加数据时可以使用add()、add_list()添加事务
add():
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 '批量创建成功'

Flask中进行增删改查CRUD)操作,可以使用SQLAlchemy库提供的ORM(对象关系映射)功能来简化数据库操作。 1. 增加(Create): - 创建一个数据库模型类,例如`Book`类,用于表示书籍信息。 - 在模型类中定义属性,例如书籍的标题、作者等。 - 使用`db.session.add()`方法将新的书籍对象添加到数据库会话中。 - 最后使用`db.session.commit()`方法提交更改,将新的书籍保存到数据库中。 2. 查询(Retrieve): - 使用模型类的查询方法,例如`Book.query.all()`可以返回数据库中所有的书籍对象。 - 使用`Book.query.filter_by()`可以根据条件筛选出符合要求的书籍对象。 - 使用`.first()`可以获取第一条满足条件的书籍对象。 - 使用`.get()`方法可以根据主键值获取对应的书籍对象。 3. 更新(Update): - 先查询到要更新的书籍对象,例如通过`Book.query.get()`方法获取到要更新的书籍对象。 - 使用新的值更新对象的属性。 - 最后使用`db.session.commit()`方法提交更改,将更新保存到数据库中。 4. 删除(Delete): - 先查询到要删除的书籍对象,例如通过`Book.query.get()`方法获取到要删除的书籍对象。 - 使用`db.session.delete()`方法将对象从数据库会话中删除。 - 最后使用`db.session.commit()`方法提交更改,将删除操作保存到数据库中。 请注意,以上是一种常见的使用SQLAlchemy进行CRUD操作的方式,具体实现还需要根据你的具体项目和模型类来进行适当的调整。同时,还要确保在Flask应用程序的配置文件中配置好数据库连接参数,例如数据库的地址、端口、用户名、密码等信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [简单的flask增删改查api接口编写](https://blog.csdn.net/laoli815/article/details/119887992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值