使用 SQLAlchemy 从表中选择数据
到目前为止,做得非常好!现在是用 SQLAlchemy 构建您的第一个 select 语句的时候了。SQLAlchemy 提供了与数据库交互的地道 Python 方式。当您在上一个练习中使用原生 SQL 时,是直接对数据库进行查询。而使用 SQLAlchemy 时,您将通过一个 Table 对象进行操作,SQLAlchemy 会为您将查询翻译成合适的 SQL 语句。这样,您无需处理诸如 MySQL 或 PostgreSQL 等传统 SQL 方言之间的差异,就可以利用 SQLAlchemy 的 Python 框架来简化工作流程,更高效地查询数据。正因为如此,即使您已经熟悉传统 SQL,也值得学习它。
在本练习中,您将再次构建一个语句来查询 census 表中的所有记录。但这一次,您将使用 sqlalchemy 模块的 select() 函数。该函数要求将表或列组成的列表作为唯一必需参数,例如:select([my_table])。
您还将通过在 .fetchmany() 中传入 size 参数,仅获取少量 ResultProxy 中的记录,以指定要获取的记录数。
Table 和 MetaData 已经导入。元数据可通过 metadata 获取,与数据库的连接为 connection。
本练习是课程的一部分
Python 中的数据库入门
练习说明
- 从
sqlalchemy模块导入select。 - 反射
census表。此代码已为您写好。 - 使用
select()函数创建一个查询,检索census表中的所有记录。为此,请向select()传入一个只包含单个元素census的列表。 - 打印
stmt以查看实际生成的 SQL 查询。此代码已为您写好。 - 从
census表中获取 10 条记录并将其存入results。为此:- 在
connection上使用.execute()方法,并以stmt作为参数以获取 ResultProxy。 - 在
connection.execute(stmt)上使用带有合适size参数的.fetchmany()以获取 ResultSet。
- 在
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)