开始使用免费开始使用

从数据库自动加载表

可以使用 SQLAlchemy 通过名为反射(reflection)的方法从数据库中自动加载表。反射是读取数据库并基于该信息构建元数据的过程。它与手动创建表相反,对于处理现有数据库非常有用。

要执行反射,您需要先导入并初始化一个 MetaData 对象。MetaData 对象包含数据库中存储的表信息。在反射过程中,MetaData 对象会自动填充被反射表的信息,因此我们只需在反射前通过调用 MetaData() 完成初始化。

您还需要从 SQLAlchemy 包中导入 Table 对象。然后使用该 Table 对象从 engine 中读取表、自动加载列并填充元数据。这一步可以通过一次对 Table() 的调用完成:以这种方式使用 Table 对象很像向函数传递参数。例如,若要使用 engine 自动加载列,需要在 Table() 中指定关键字参数 autoload=Trueautoload_with=engine

最后,为查看刚创建对象的信息,您将使用 repr() 函数。对于任意 Python 对象,repr() 会返回该对象的文本表示。对于 SQLAlchemy 的 Table 对象,它会返回元数据中包含的该表信息。

在本练习中,您的任务是将 engine 上可用的 "census" 表反射到名为 census 的变量中。我们已经预先填充了在上一个练习中您编写的用于创建 engine 的代码。

本练习是课程的一部分

Python 中的数据库入门

查看课程

练习说明

  • sqlalchemy 导入 TableMetaData
  • 创建一个 MetaData 对象:metadata
  • 使用 Table 对象并传入以下参数来反射 census 表:
    • 表名字符串('census')。
    • 刚刚初始化的元数据对象。
    • autoload=True
    • 用于自动加载的 engine——此处为 engine
  • 使用 repr() 函数打印 census 的详细信息。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____

# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')

# Create a metadata object: metadata
metadata = ___

# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)

# Print census table metadata
print(____)
编辑并运行代码