在上一小节中介绍了
sqlalchemy
的安装及基本的使用,本小节介绍查询功能
一、查询结果
-
1、
all()
查询全部数据from sqlalchemy_demo.connect import dbSessionfrom sqlalchemy_demo.modules.user_module import UserModuledef 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)复制代码