在上一小节中介绍了
sqlalchemy
的安装及基本的使用,本小节介绍查询功能
一、查询结果
- 1、
all()
查询全部数据
from sqlalchemy_demo.connect import dbSession
from sqlalchemy_demo.modules.user_module import UserModule
def query_user():
rows = dbSession.query(UserModule).all()
print(rows)
if __name__ == "__main__":
query_user()
- 2、
first()
查询第一条数据
...
def query_user():
rows = dbSession.query(UserModule).first()
print(rows)
...
- 3、也可使用
all()
查询后取下标的方式取数据 - 4、根据想要的字段返回数据
def query_user():
# 只返回user_name, password字段
rows = dbSession.query(UserModule.user_name, UserModule.password).filter(UserModule.id == 1).first()
print(rows)
二、数据的过滤
- 1、
filter()
添加过滤条件(注意返回的依然是列表)
def query_user():
rows = dbSession.query(UserModule).filter(UserModule.id == 1).first()
print(rows)
- 2、使用
filter_by
过滤
def query_user():
rows = dbSession.query(UserModule).filter_by(id=1).first()
print(rows)
- 3、关于
filter
和filter_by
的区别- 1.
filter
中需要添加类对象,filter_by
不需要 - 2.
filter_by
中只能添加等于的条件,不能添加,不等于、大于小于等条件,filter
没有这个限制
- 1.
三、模糊查询
- 1、
like
的使用
def query_user():
# 查询以王开头的user_name字段
rows = dbSession.query(UserModule).filter(UserModule.user_name.like('王%')).all()
# 查询以五结尾的
# rows = dbSession.query(UserModule).filter(UserModule.user_name.like('%五')).all()
print(rows)
- 2、
notlike
的使用(与like
相反)
def query_user():
rows = dbSession.query(UserModule).filter(UserModule.user_name.notlike('%五')).all()
print(rows)
- 3、
in_([])
在什么里面
def query_user():
rows = dbSession.query(UserModule).filter(UserModule.user_name.in_(['王五', '马六'])).all()
print(rows)
- 4、
notin_([])
不包括的 - 5、
is_()
精确查找
def query_user():
rows = dbSession.query(UserModule).filter(UserModule.user_name.is_(None)).all()
print(rows)
- 6、
isnot()
精确查找
四、查询结果
- 1、
all()
查询到全部 - 2、
limit()
限制条数
...
def query_user():
rows = dbSession.query(UserModule).limit(2).all()
print(rows)
...
- 3、
offset()
偏移
...
def query_user():
rows = dbSession.query(UserModule).offset(2).all()
print(rows)
...
- 4、
slice()
切片的使用
def query_user():
rows = dbSession.query(UserModule).slice(1, 4).all()
print(rows)
- 5、
one()
查找一条,如果有多条就会报错
def query_user():
rows = dbSession.query(UserModule).filter_by(id=1).one()
print(rows)
五、排序的使用
- 1、导包
from sqlalchemy import desc, asc
- 2、默认升序排序
def query_user():
rows = dbSession.query(UserModule).order_by(UserModule.id).all()
print(rows)
- 3、使用降序
def query_user():
rows = dbSession.query(UserModule).order_by(desc(UserModule.id)).all()
print(rows)
- 4、
order_by
和limit
的使用
def query_user():
rows = dbSession.query(UserModule).order_by(desc(UserModule.id)).limit(2).all()
print(rows)