sqlalchemy在python中的使用(關於查詢)二

水痕001發表於2019-01-03

在上一小節中介紹了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、關於filterfilter_by的區別

    • 1.filter中需要新增類物件,filter_by不需要
    • 2.filter_by中只能新增等於的條件,不能新增,不等於、大於小於等條件,filter沒有這個限制

三、模糊查詢

  • 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_bylimit的使用

    def query_user():    rows = dbSession.query(UserModule).order_by(desc(UserModule.id)).limit(2).all()    print(rows)複製程式碼

來源:https://juejin.im/post/5c2dbc75f265da616c65ba41

相關文章