文章内容

2023/5/7 17:17:14,作 者: 黄兵

SQLAlcehmy count() 与 limit() 查询

SQLAlchemy count() 查询示例

count() 是 SQLAlchemy 中用于计算匹配给定条件的行数的聚合函数之一。

下面是一个基本的示例,演示如何使用 SQLAlchemy 的 count() 函数:

from sqlalchemy import create_engine, func
from sqlalchemy.orm import sessionmaker

# 创建一个数据库连接
engine = create_engine('数据库连接字符串')

# 创建一个 Session 类实例
Session = sessionmaker(bind=engine)
session = Session()

# 使用 count() 函数计算 users 表中符合条件的行数
count = session.query(func.count('*')).select_from(User).scalar()

# 打印计算出来的行数
print(count)

在上面的示例中,func.count('*') 指定计算所有符合条件的行数。如果要计算特定列的行数,可以将列名作为参数传递给 count() 函数,例如 func.count(User.id)

此外,还可以在 query() 方法中指定条件来计算符合条件的行数,例如:

count = session.query(func.count('*')).select_from(User).filter(User.name.like('%John%')).scalar()

上面的示例将只计算 User 表中名字包含 "John" 的行数。

需要注意的是,count() 函数返回的结果是一个整数值,而不是一个查询结果集。因此,可以使用 scalar() 方法来获取结果。

SQLAlcehmy limit() 查询示例

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建一个数据库连接
engine = create_engine('数据库连接字符串')

# 创建一个 Session 类实例
Session = sessionmaker(bind=engine)
session = Session()

# 检索前 10 个用户
users = session.query(User).limit(10).all()

# 打印检索到的用户
for user in users:
    print(user.name)

在上面的示例中,limit() 方法被用于限制检索的结果集大小为前 10 个用户。使用 all() 方法来执行查询并返回所有结果。

除了 limit() 方法之外,还可以使用 slice() 方法来指定从查询结果集中的哪个位置开始返回结果,例如:

users = session.query(User).slice(20, 30).all()

上面的示例将返回结果集中第 21 到第 30 行的用户。

需要注意的是,limit() 方法和 slice() 方法都应该在查询语句的末尾使用,以便确保它们适用于整个查询结果集。


其它相关推荐:

1、sqlalchemy结果转json

2、SQLAlchemy session 使用问题

3、在 Flask-SQLAlchemy 中联表查询

4、sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1062

5、SQLAlchemy filter和filter_by写法的一些区别

分享到:

发表评论

评论列表