在上一小節中介紹了
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)複製程式碼