orm查询1

查询的两种方式

db.session.query(类名).all()  ##通过session上下文

类名.query.all()    ##通过类名

排序,默认升序

for emp in Employee.query.order_by(Employee.salary).all():
    print(emp)

查询指定字段

for n,s in db.session.query(Employee.name,Employee.salary):
    print(n,s)


for row in db.session.query(Employee.name,Employee.salary):
    print(row[0],row.salary)   #内部封装的named tuple ,既可通过下标访问也可以通过打点字段名访问


for row in db.session.query(Employee.salary.label('薪水')):
    print(row.薪水)   ##给字段名换个标签

选择查询的条数

for emp in Employee.query.limit(5):
    print(emp)  ##获取前五条


for emp in Employee.query.offset(10).limit(5):
    print(emp)  ##跳过前十条

过滤

db.session.query(Employee).filter_by(name='***') #通过sql语法实现,关键字加值

db.session.query(Employee).filter(Employee.name=='***') ##通过python面向对象的语法

filter语法过滤方法

db.session.query(Employee).filter(Employee.name.startswith('***')) ##以**开头
db.session.query(Employee).filter(Employee.name.contains('***'))  ##包含**
db.session.query(Employee).filter(Employee.name.endswith('***'))  ##以**结尾
db.session.query(Employee).filter(Employee.salary>5000).filter(Employee.name=='**')##多个条件过滤

db.session.query(Employee).filter(Employee.name.like('%陈%'))#模糊查询,'陈%','%陈%','%陈'

范围

db.session.query(Department).filter(Department.name.in_(['技术部','人事部']))#查询部门名称为人事部和技术部的

db.session.query(Department).filter(~Department.name.in_['技术部','人事部'])#查询部门名称不为人事部和技术部的

db.session.query(Department).filter(Department.name.is_('技术部')) #查询部门名称是技术部的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值