falsk模型-flask_sqlalchemy增删改查

1、增、删、改

python 复制代码
@home_bp.route('/useradd')
def user_add():
    users = []
    for i in range(10,20):
        user = User()
        user.name = '冰冰' + str(i)
        user.age = 20+i
        users.append(user)
    try:
        db.session.add_all(users)
        db.session.commit()
        return jsonify({'code':1,'info':'success'})
    except Exception as e:
        db.session.rollback()
        return jsonify({'code':0,'info':str(e)})

python 复制代码
#删
@home_bp.route('/userdel')
def user_del():
    user = User.query.first() # 查询第一条数据
    db.session.delete(user)
    try:
        db.session.commit()
        return jsonify({'code':1,'info':'success'})
    except Exception as e:
        db.session.rollback()
        return jsonify({'code':0,'info':str(e)})

python 复制代码
# 改:修改数据
#    找到要修改的数据,然后修改
@home_bp.route('/userupdate/')
def user_update():
    u = User.query.first()  # 查询第一条数据
    u.age = 1000
    db.session.commit()
    return jsonify({'code':1,'info':'success'})

2、查

(1)all(): 返回所有数据,返回列表

python 复制代码
    users = User.query.all()

    print(users, type(users))  # <class 'list'>

    print(users[0].name)  #冰冰01

    print(User.query, type(User.query))  # <class 'flask_sqlalchemy.query.Query'>

(2) filter() : 过滤,得到查询集,类似SQL中的where

python 复制代码
    users = User.query.filter(User.age==20)
    users = User.query.filter(User.age>20)  # 可以用于非等值操作
    print(list(users))  # [冰冰20]

(3) count(): 统计查询集(User.query.filter()中的数据条数

python 复制代码
     users = User.query.filter()
     print(users.count())  # 20

(4)filter_by() : 用于等值操作的过滤

python 复制代码
users = User.query.filter_by(age=20)

(5)get():查询到对应主键的数据对象

python 复制代码
    user = User.query.get(8)
    print(user, type(user))  # User对象 <class 'App.models.User'>
    print(user.name, user.age)  # 获取数据的属性

(6)limit() : 前几条:offset() : 跳过前几条

python 复制代码
   users = User.query.offset(3).limit(4)
   print(list(users))

(7)排序

复制代码
    users = User.query.order_by('age')  # 升序
    users = User.query.order_by(desc('age'))  # 降序

(8)and_,or_,not_

python 复制代码
     users = User.query.filter(User.age>20, User.age<25)  # 且,常用
     users = User.query.filter(and_(User.age>20, User.age<25))  # 且
     users = User.query.filter(or_(User.age>25, User.age<20))  # 或
     users = User.query.filter(not_(or_(User.age>25, User.age<20)))  # 非

(9) 模糊查找,类似SQL中的like

python 复制代码
users = User.query.filter(User.name.contains('3'))

(10) in_(): 其中之一

python 复制代码
users = User.query.filter(User.age.in_([10, 20, 30, 40, 50]))

(11) startswith() : 以某子串开头,endswith() : 以某子串结尾

python 复制代码
    users = User.query.filter(User.name.startswith('冰'))  #
    users = User.query.filter(User.name.endswith('2'))

(12)gt: 大于

python 复制代码
users = User.query.filter(User.age.__gt__(25))
相关推荐
雄大几秒前
使用 QWebChannel 实现 JS 与 C++ 双向通信(超详细 + 踩坑总结 + Demo)
后端
计算机学姐2 分钟前
基于SpringBoot的汉服租赁系统【颜色尺码套装+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
WJSKad12353 分钟前
果园树干识别与定位_faster-rcnn_x101-32x4d_fpn_1x_coco改进实践
python
深蓝电商API3 分钟前
Scrapy中间件实战:自定义请求头和代理池实现
python·scrapy·中间件
回家路上绕了弯3 分钟前
定期归档历史数据实战指南:从方案设计到落地优化
分布式·后端
+VX:Fegn08953 分钟前
计算机毕业设计|基于springboot + vue建筑材料管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
掘金者阿豪4 分钟前
Redis `WRONGTYPE` 错误的原因及解决方法
后端
天天摸鱼的java工程师7 分钟前
线程池深度解析:核心参数 + 拒绝策略 + 动态调整实战
java·后端
hui函数9 分钟前
Python系列Bug修复|如何解决 pip install 安装报错 invalid command ‘bdist_wheel’(缺少 wheel)问题
python·bug·pip
hui函数11 分钟前
Python系列Bug修复|如何解决 pip install -r requirements.txt 私有索引未设为 trusted-host 导致拒绝 问题
python·bug·pip