欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

SqlAlchemy使用的详细总结

时间:2023-04-23

前言:SqlAlchemy 和 flask-SqlAlchemy是不一样的,flask-SqlAlchemy是flask封装了SqlAlchemy的结果,相对来说,flask-SqlAlchemy更加的好用,但本文将详细介绍SqlAlchemy的使用。

SqlAlchemy涉及到的业务: 1:创建model对象,SqlAlchemy连接数据库

# 创建model对象class Power(base): __tablename__ = 'power_info' id = Column(Integer, primary_key=True, nullable=False) uid = Column(String(255), nullable=False) power_name = Column(String(255)) create_time = Column(String(255), nullable=False) update_time = Column(String(255))# SqlAlchemy连接数据库url = f'mysql+mysqlconnector://{user}:{password}@{host}:{port}/{database}'engine = create_engine(url, echo=True,encoding='utf-8', pool_timeout=30)# echo=True 将原生sql语句打印至控制台# pool_timeout:设置超时时间# 创建DBSession类型:DBSession = sessionmaker(bind=engine)# 创建session对象:session = DBSession()

2:查找数据

基本语法:

查找所有数据:
data = session.query(要查找的字段/可以是整个model对象).filter(条件).all()

查找单条数据数据:
data = session.query(要查找的字段/可以是整个model对象).filter(条件).one()/first()

其它更多方法 如:.all() .first() .scalar() .one() .one_or_none() .get() 等的区别
见【该博主详细的介绍这几个方法的区别】

条件查询:
条件查询有filter_by 和 filter方法,二者区别见【 filter_by / filter区别】,在实际使用之后还是个人感觉filter比较好用

# eg:data = session.query(Power.id).filter(Power.uid == uid).all()

3:数据排序

基本语法:.order_by(排序条件.desc()) 【desc()降序,asc()升序】

# eg:# .order_by(Power.create_time.desc())data = session.query(Power.id).filter(Power.uid == uid).order_by(Power.create_time.desc()).all()

4:数据分页

基本语法:.limit(每页条数).offset((页码 - 1) * 每页条数)
#: 此处一定一定要注意:如果语句中还包含排序语句,一定要将分页语句放到排序语句之后

# eg:# .limit(page_size).offset((page_index - 1) * page_size)data = session.query(Power.id).filter(Power.uid == uid).order_by(Power.create_time.desc()).limit(page_size).offset((page_index - 1) * page_size).all()

5:数据更新

基本语法:session 、query(model对象) 、filter(修改条件) 、update( {‘数据库更新字段名’: 更新值})

# eg:session.query(Power).filter(Power.uid==uid).update( {'power_name': power_name, 'update_time': update_time})session.commit()session.close()

6:添加数据:

基本语法:变量 = model对象 ( 要添加的表中字段对应值 )

# eg:role = Role(uid=uid, role_name=role_name,create_time=create_time, status=Utils.STATUS)session.add(role)session.commit()

7:删除数据:

基本语法:session 、query( model对象 ) 、filter( 删除条件 ) 、delete()

# eg:session.query(RolePower).filter(RolePower.power_uid == uid).delete()session.commit()

【文章编写不易,如需转发请联系作者!】

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。