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()

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

猜你喜欢

转载自blog.csdn.net/qq_46170664/article/details/123143323