📜  sqlalchemy 查询仅返回 n 个结果 - SQL (1)

📅  最后修改于: 2023-12-03 15:20:18.023000             🧑  作者: Mango

SQLAlchemy 查询仅返回 n 个结果

在使用 SQLAlchemy 执行查询时,通常会返回所有符合条件的结果。但有时候我们只想获取前 n 个结果,以达到更高效的查询目的。下面介绍如何使用 SQLAlchemy 查询仅返回 n 个结果。

方法一:使用 limit 函数

使用 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)
方法二:使用 slice 函数

除了使用 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 条记录。具体使用哪种方法可以根据业务需求和性能需求而定。