当前位置:   article > 正文

Flask ORM操作_flask orm 批量写入

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

常用查询操作

#计数
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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

进阶查询操作

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

分页

#方式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
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

删除操作

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

修改操作

User.query.filter(id=11).update(name='django11')
db.session.commit()
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/540452
推荐阅读
相关标签
  

闽ICP备14008679号