赞
踩
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。