修改
my_user = Session.query(User).filter_by(name="alex").first()
my_user.name = "Alex Li"
Session.commit()
獲取所有數據
session.query(Person).all()
獲取某一列數據,類似於django的get,如果返回數據為多個則報錯
session.query(Person).filter(Person.name=='jack').one()
獲取返回數據的第一行
session.query(Person).first()
過濾數據
session.query(Person.name).filter(Person.id>1).all()
limit
session.query(Person).all()[1:3]
order by
session.query(Person).ordre_by(-Person.id)
equal/like/in
query = session.query(Person)
query.filter(Person.id==1).all()
query.filter(Person.id!=1).all()
query.filter(Person.name.like('%ac%')).all()
query.filter(Person.id.in_([1,2,3])).all()
query.filter(~Person.id.in_([1,2,3])).all()
query.filter(Person.name==None).all()
and or
from sqlalchemy import and_
query.filter(and_(Person.id==1, Person.name=='jack')).all()
query.filter(Person.id==1, Person.name=='jack').all()
query.filter(Person.id==1).filter(Person.name=='jack').all()
from sqlalchemy import or_
query.filter(or_(Person.id==1, Person.id==2)).all()
回滾
my_user = Session.query(User).filter_by(id=1).first()
my_user.name = "Jack"
fake_user = User(name='Rain', password='12345')
Session.add(fake_user)
print(Session.query(User).filter(User.name.in_(['Jack','rain'])).all() ) #這時看session里有你剛添加和修改的數據
Session.rollback() #此時你rollback一下
print(Session.query(User).filter(User.name.in_(['Jack','rain'])).all() ) #再查就發現剛才添加的數據沒有了。
# Session
# Session.commit()
多條件查詢
objs = Session.query(User).filter(User.id>0).filter(User.id<7).all()
統計和分組
Session.query(User).filter(User.name.like("Ra%")).count()
分組
from sqlalchemy import func
print(Session.query(func.count(User.name),User.name).group_by(User.name).all() )