掌握BaseQuery()的常用查询方法
发布时间:2024-01-03 01:26:35
BaseQuery()是SQLAlchemy中的一个查询构造器,它提供了一系列常用的查询方法,用于构建和执行查询语句。下面是BaseQuery()的一些常用查询方法和使用示例。
1. filter()方法:用于添加过滤条件,只返回符合条件的结果集。
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建数据库引擎
engine = create_engine('mysql+mysqlconnector://username:password@localhost:3306/database')
# 创建Session会话
Session = sessionmaker(bind=engine)
session = Session()
# 创建BaseQuery对象
Base = declarative_base()
# 定义模型类
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(50))
age = Column(Integer)
# 查询年龄大于等于18的用户
users = session.query(User).filter(User.age >= 18).all()
for user in users:
print(user.name, user.age)
2. order_by()方法:用于设置结果集的排序方式。
# 按照年龄降序排列用户
users = session.query(User).order_by(User.age.desc()).all()
for user in users:
print(user.name, user.age)
3. distinct()方法:用于去除结果集中的重复记录。
# 查询不重复的年龄
ages = session.query(User.age).distinct().all()
for age in ages:
print(age[0])
4. join()方法:用于连接多个表进行查询。
from sqlalchemy.orm import relationship
# 定义模型类
class Post(Base):
__tablename__ = 'post'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('user.id'))
content = Column(String(100))
user = relationship("User", backref="posts")
# 查询用户及其对应的所有文章
users = session.query(User).join(Post).all()
for user in users:
print(user.name)
for post in user.posts:
print(post.content)
5. limit()方法:用于限制结果集的数量。
# 查询前3个用户
users = session.query(User).limit(3).all()
for user in users:
print(user.name)
6. offset()方法:用于设置结果集的偏移量。
# 查询从第4个用户开始的三个用户
users = session.query(User).offset(3).limit(3).all()
for user in users:
print(user.name)
7. group_by()方法:用于对结果集进行分组。
# 查询每个年龄段的用户数量
users = session.query(User.age, func.count(User.id)).group_by(User.age).all()
for age, count in users:
print(age, count)
8. having()方法:用于对分组结果进行条件过滤。
# 查询年龄大于等于18的每个年龄段的用户数量
users = session.query(User.age, func.count(User.id)).group_by(User.age).having(User.age >= 18).all()
for age, count in users:
print(age, count)
9. count()方法:用于计算结果集的数量。
# 查询用户的总数量 user_count = session.query(User).count() print(user_count)
以上是BaseQuery()常用的查询方法和使用示例,通过这些方法可以构建出各种复杂的查询语句,并且灵活地操作数据库中的数据。
