前言: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()
【文章编写不易,如需转发请联系作者!】