📜  SQLAlchemy Core – 选择行(1)

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

SQLAlchemy Core – 选择行

在SQLAlchemy中,可以使用SQLAlchemy Core来选择行并执行相关的操作。这是查询和操作数据库记录的重要方面。 在这篇文章中,我们将讨论如何使用SQLAlchemy Core选择行并执行相关的操作。

前置知识

在阅读本文之前,请确保您已经了解了SQLAlchemy Core的基本操作,以及了解如何创建基本的数据库表。您可以参考以下链接:

SQLAlchemy Core - 基础操作

SQLAlchemy Core - 创建表

选择所有行

要选择所有行,可以使用 select() 函数。 这个函数返回一个 Select 对象, 其可以使用 execute() 方法执行查询。

from sqlalchemy import create_engine, Table, Column, Integer, MetaData

engine = create_engine("sqlite:///example.db", echo=True)

metadata = MetaData()

users = Table(
    'users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', None),
)

with engine.connect() as conn:
    query = users.select()
    result = conn.execute(query)
    for row in result:
        print(row)

在这个例子中,我们使用 users.select() 函数来选择所有行并创建一个查询对象。然后,我们使用 conn.execute() 方法来使用这个查询并执行查询。最后,我们迭代查询结果并打印每行。

选择特定列

如果只需要选择表中的特定列,可以在 select() 中指定这些列。

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, select

engine = create_engine("sqlite:///example.db", echo=True)
metadata = MetaData()

users = Table(
    'users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('age', Integer),
)

with engine.connect() as conn:
    query = select([users.c.name, users.c.age])
    result = conn.execute(query)
    for row in result:
        print(row)

在这个例子中,我们使用了 select() 函数并指定了 users.c.nameusers.c.age 作为所需的列。在执行查询后,我们迭代每行并打印它们。请注意,我们可以使用 c 属性来访问列。这个属性是 ColumnClause 对象上的一个属性。

筛选行

要筛选一行或多行,可以使用 where() 函数和其他SQLAlchemy Core运算符。 这些运算符可以用来创建筛选条件,例如等于、小于、大于等运算符。

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, select

engine = create_engine("sqlite:///example.db", echo=True)
metadata = MetaData()

users = Table(
    'users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('age', Integer),
)

with engine.connect() as conn:
    query = select([users.c.name, users.c.age]).where(users.c.age > 30)
    result = conn.execute(query)
    for row in result:
        print(row)

在这个例子中,我们使用了 where() 函数来指定筛选条件。 在此,我们指定 users.c.age > 30 作为筛选条件,这将筛选出年龄大于30岁的用户。在查询中使用此条件后,我们迭代每行并打印它们。

排序行

要根据一列或多列对行进行排序,可以使用 order_by() 函数。

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, select

engine = create_engine("sqlite:///example.db", echo=True)
metadata = MetaData()

users = Table(
    'users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('age', Integer),
)

with engine.connect() as conn:
    query = select([users.c.name, users.c.age]).order_by(users.c.age)
    result = conn.execute(query)
    for row in result:
        print(row)

在这个例子中,我们使用了 order_by() 函数并指定 users.c.age 作为要排序的列。此外,我们还使用了 select() 函数来选择列。查询将选择所有行并按年龄排序。最后,我们迭代每行并打印它们。

总结

在本文中,我们介绍了如何使用SQLAlchemy Core选择行并执行相关操作。我们涵盖了选择所有行、选择特定列、筛选行和排序行等重要方面。 这将是您使用SQLAlchemy Core进行数据操作的基础。