1、增、删、改
增
@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)})
删
#删
@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)})
改
# 改:修改数据
# 找到要修改的数据,然后修改
@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(): 返回所有数据,返回列表
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
users = User.query.filter(User.age==20)
users = User.query.filter(User.age>20) # 可以用于非等值操作
print(list(users)) # [冰冰20]
(3) count(): 统计查询集(User.query.filter()中的数据条数
users = User.query.filter()
print(users.count()) # 20
(4)filter_by() : 用于等值操作的过滤
users = User.query.filter_by(age=20)
(5)get():查询到对应主键的数据对象
user = User.query.get(8)
print(user, type(user)) # User对象 <class 'App.models.User'>
print(user.name, user.age) # 获取数据的属性
(6)limit() : 前几条:offset() : 跳过前几条
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_
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
users = User.query.filter(User.name.contains('3'))
(10) in_(): 其中之一
users = User.query.filter(User.age.in_([10, 20, 30, 40, 50]))
(11) startswith() : 以某子串开头,endswith() : 以某子串结尾
users = User.query.filter(User.name.startswith('冰')) #
users = User.query.filter(User.name.endswith('2'))
(12)__gt__: 大于
users = User.query.filter(User.age.__gt__(25))