📅  最后修改于: 2023-12-03 15:35:07.170000             🧑  作者: Mango
SQLAlchemy核心是一个面向关系型数据库的Python SQL工具包。它是一个ORM(对象关系映射)工具,它提供了一个抽象层,允许我们直接使用Python代码来访问和操作数据库。
集合操作是SQLAlchemy核心中一个非常有用和强大的功能。它允许我们对数据库中的数据进行分组、排序、过滤和聚合操作,并且提供了一种自然的方式来表达这些操作。
本文将介绍SQLAlchemy核心中的集合操作。
集合操作定义了SQLAlchemy核心库中最重要的抽象层:集合。集合是一种对象,表示一个SQL语句的结果集,可以对其进行各种操作。
集合操作包括:
下面将会涵盖这些操作。
过滤操作是集合操作中最常见的操作之一。它允许我们从集合中选择符合某个条件的记录。
SQLAlchemy提供了一系列常用的过滤操作,包括==
、!=
、>
、<
、>=
、<=
、LIKE
、IN
和NOT IN
等。具体使用方式如下:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///test.db')
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
# 对age字段进行过滤
results = session.query(User).filter(User.age>18)
# 对name字段进行过滤
results = session.query(User).filter(User.name=='Alice')
# 包含指定字符串的过滤
results = session.query(User).filter(User.name.like('Alice%'))
# 包含两个指定字符串的过滤
results = session.query(User).filter(User.name.like('%Alice%'))
# in和not in过滤
results = session.query(User).filter(User.name.in_(['Alice', 'Bob']))
results = session.query(User).filter(User.name.notin_(['Alice', 'Bob']))
排序操作可以让我们对集合中的记录进行排序。
SQLAlchemy提供了两种排序操作:asc()
和desc()
。具体使用方式如下:
# 对age字段进行升序排序
results = session.query(User).order_by(User.age.asc())
# 对name字段进行降序排序
results = session.query(User).order_by(User.name.desc())
分组操作是将数据按照一定规则分成若干组的操作。分组操作通常与聚合函数配合使用。
SQLAlchemy提供了一种非常便捷的分组操作,即group_by()
。具体使用方式如下:
# 按照age分组
results = session.query(User.age, func.count(User.id))
.group_by(User.age)
聚合操作是一种将多个值计算为单个值的操作。
SQLAlchemy提供了许多常用的聚合函数,包括count()
、sum()
、avg()
、min()
和max()
等。它们可以应用于整个集合,也可以应用于分组后的子集。
具体使用方式如下:
# 计算年龄总和
result = session.query(func.sum(User.age)).scalar()
# 计算每个人年龄的平均值
results = session.query(User.name, func.avg(User.age))
.group_by(User.name)
SQLAlchemy提供了很多常用的函数操作,如date()
、distinct()
、exists()
、concat()
、cast()
等。
有关常用函数的详细信息,请参阅官方文档。
这篇文章介绍了SQLAlchemy核心中集合操作的一些基本知识,包括过滤操作、排序操作、分组操作、聚合操作和常用函数操作。
集合操作非常强大和灵活,可以方便地完成各种复杂的数据库操作。掌握这些操作可以使你在Python中更加有效地访问和操作数据库。