模糊查询
用法:session.query(类).filter(类.属性.like('%XXX%'))
数据查询方法
one()和all(),one的结果是tuple,all的结果是list。如果不写one和all,查询的结果为sql。
数据更新
先查询出数据,在更新数据,最后提交数据。
用法:对象1=session.query(类).filter_by(属性="value")
对象1.属性="修改的值"
session.commit()
数据删除
查询出数据,调用delete(),最后提交数据。
用法:对象1=session.query(类).filter_by(属性="value").delete()
session.commit()
统计
查询数据后面用count()
用法:对象1=session.query(类).filter_by(属性="value").count()
session.commit()
分组
查询数据后面用gourp_by
用法:对象1=session.query(类).filter_by(属性="value").group_by()
session.commit()
排序
查询数据进行排序oreder_by
用法:对象1=session.query(类).filter_by(属性="value").order_by()
反序
用法:对象1=session.query(类).filter_by(属性="value").order_by(class.属性.desc())
举例:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
engine=create_engine("mysql+pymysql://root:123456@localhost/python",connect_args={'charset':'utf8'}) #创建数据库连接
DBSession=sessionmaker(bind=engine) #创建一个session工厂
session=DBSession()
Base=declarative_base() #
class Student(Base):
__tablename__ = 'python_student'
id = Column(Integer,primary_key = True)
name = Column(String(20))
age = Column(Integer)
address = Column(String(100))
paixu=session.query(Student).order_by(Student.id).all()
for i in paixu:
print (i.id,i.name,i.age,i.address)
结果:
D:\mypython\venv\Scripts\python.exe D:\mypython\session.py
1 张三 22 北京
3 刘大 25 天津
Process finished with exit code 0