Flask ORM操作

Flask ORM操作
基本查询操作

#select name from user
User.query(User.name).all()
#匹配id=10的记录
User.query.filter(User.id==10).all()
User.query.get(10)#等同上句
#获取第一条记录
User.query.all().first()

常用查询操作

#计数
User.query.all().count()
#排序(升序)
User.query.order_by(User.age).all()
#排序(降序)
User.query.order_by(User.age).all()
#匹配name包含123
User.query.filter(User.name.contains('123'))
#模糊搜索
User.query.filter(User.name.like('%123%'))
#匹配id小于10的记录
User.query.filter(User.id.__lt__(10))
User.query.filter(User.id. < 10)
#匹配id小于等于10的记录
User.query.filter(User.id.__le__(10))
User.query.filter(User.id. <= 10)
#匹配id大于10的记录
User.query.filter(User.id.__gt__(10))
User.query.filter(User.id. > 10)
#匹配id大于等于10的记录
User.query.filter(User.id.__ge__(10))
User.query.filter(User.id. >= 10)
##匹配id在[10,12,15,17,20]的记录
User.query.filter(User.id.in_([10,12,15,17,20])
#匹配id不在[10,12,15,17,20]的记录
User.query.filter(User.id.notin_([10,12,15,17,20])
#匹配id不等于10的记录
User.query.filter(User.id != 10).all()
#匹配name为空的记录
User.query.filter(User.id.is_(None)).all()
#匹配name不为空的记录
User.query.filter(User.id.isnot(None)).all()

进阶查询操作

from sqlalchemy import and_,or_,not_
#and,匹配id>3和name=DragonFire
User.query.filter(and_(User.id > 3, User.name =='DragonFire')).all()
#or,匹配id>3或者name=DragonFire
User.query.filter(or_(User.id > 3, User.name =='DragonFire')).all()
#分组统计
User.query.filter(User.age,func.count(User.id)).group_by(User.age)
#使用not_匹配id小于10的记录
User.query.filter(not_(User.id >= 10)).all() #注意not只能对一个条件取反

分页

#方式1 limit(每页显示大小),offset(开始索引)
User.query.all().limit(page_size).offset((current_page-1)*page_size)
#方式2 slice(开始索引,结束索引)
User.query.all().slice((current_page-1)*page_size,current_page*page_size)
#方式3 paginate(当前页数,每页显示大小)
User.query.all().paginate(current_page,page_size)

添加操作
1.添加单条记录

User(id=10,name='flask')
db.session.commit()

2.批量添加记录

#方式1 性能较差
to_insert_user=[]
for i in range(10):
	to_insert_user.append(User(id=i, name='123'))
db.session.bulk_save_object(to_insert_user)
db.session.commit()

#方式2 性能较好
to_insert_user=[]
for i in range(10):
    to_insert_user.append(dict(id=i, name='123'))
db.session.bulk_insert_mappings(User,to_insert_user)
db.session.commit()

#方式3 性能最好
to_insert_user=[]
for i in range(10):
    to_insert_user.append(dict(id=i, name='123'))
db.session.execute(User.__table__.insert(),to_insert_user)
db.session.commit()

删除操作

User.query.filter(id=10).delete()

修改操作

User.query.filter(id=11).update(name='django11')
db.session.commit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值