📅  最后修改于: 2023-12-03 15:20:18.023000             🧑  作者: Mango
在使用 SQLAlchemy 执行查询时,通常会返回所有符合条件的结果。但有时候我们只想获取前 n 个结果,以达到更高效的查询目的。下面介绍如何使用 SQLAlchemy 查询仅返回 n 个结果。
使用 SQLAlchemy 的 query
函数可以向数据库提交查询请求。我们可以在调用该函数时,在其后面连接 limit 函数,以返回前 n 条结果记录。
from sqlalchemy import create_engine, Column, String, Integer, Text
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建数据库连接
engine = create_engine('mysql+pymysql://user:password@host:port/database')
# 创建一个 sessionmaker 对象
Session = sessionmaker(bind=engine)
session = Session()
# 创建数据模型
Base = declarative_base()
class Article(Base):
__tablename__ = 'articles'
id = Column(Integer, primary_key=True)
title = Column(String(100))
content = Column(Text)
# 查询前 n 条记录
n = 10
results = session.query(Article).limit(n).all()
# 打印查询结果
for result in results:
print(result.id, result.title)
除了使用 limit 函数外,我们还可以使用 Python 中的基于切片的数组访问。在查询语句中使用 [:n]
的语法即可。
from sqlalchemy import create_engine, Column, String, Integer, Text
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建数据库连接
engine = create_engine('mysql+pymysql://user:password@host:port/database')
# 创建一个 sessionmaker 对象
Session = sessionmaker(bind=engine)
session = Session()
# 创建数据模型
Base = declarative_base()
class Article(Base):
__tablename__ = 'articles'
id = Column(Integer, primary_key=True)
title = Column(String(100))
content = Column(Text)
# 查询前 n 条记录
n = 10
results = session.query(Article)[:n]
# 打印查询结果
for result in results:
print(result.id, result.title)
总之,这些方法都是使用 SQLAlchemy 进行查询,返回前 n 条记录。具体使用哪种方法可以根据业务需求和性能需求而定。