SqlAlchemy使用的详细总结

前言: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()

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值