SQLAlchemy Core - 创建表
现在让我们讨论如何使用创建表函数。
SQL 表达式语言根据表列构造其表达式。SQLAlchemy Column 对象表示数据库表中的 列,而该表又由 Tableobject 表示。元数据包含表和相关对象(如索引、视图、触发器等)的定义。
因此,SQLAlchemy Metadata 中的 MetaData 类的对象是 Table 对象及其相关架构构造的集合。它包含 Table 对象的集合以及与 Engine 或 Connection 的可选绑定。
from sqlalchemy import MetaData meta = MetaData()
MetaData 类的构造函数可以具有绑定和架构参数,默认情况下为 None。
接下来,我们使用 Table 构造(类似于常规 SQL CREATE TABLE 语句)在上述元数据目录中定义我们的表。
Table 类的对象表示数据库中的对应表。构造函数采用以下参数 −
名称 | 表的名称 |
---|---|
元数据 | 将保存此表的元数据对象 |
列 | 列类的一个或多个对象 |
列对象表示数据库表中的列。构造函数采用名称、类型和其他参数,例如 primary_key、自动增量和其他约束。
SQLAlchemy 将 Python 数据与其中定义的最佳通用列数据类型进行匹配。一些通用数据类型是 −
- BigInteger
- Boolean
- Date
- DateTime
- Float
- Integer
- Numeric
- SmallInteger
- String
- Text
- Time
要在大学数据库中创建学生表,请使用以下代码片段 −
from sqlalchemy import Table, Column, Integer, String, MetaData meta = MetaData() students = Table( 'students', meta, Column('id', Integer, primary_key = True), Column('name', String), Column('lastname', String), )
create_all() 函数使用引擎对象创建所有定义的表对象并将信息存储在元数据中。
meta.create_all(engine)
下面给出了完整的代码,它将创建一个 SQLite 数据库 college.db,其中包含一个 students 表。
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///college.db', echo = True) meta = MetaData() students = Table( 'students', meta, Column('id', Integer, primary_key = True), Column('name', String), Column('lastname', String), ) meta.create_all(engine)
由于 create_engine() 函数的 echo 属性设置为 True,控制台将显示创建表的实际 SQL 查询,如下所示 −
CREATE TABLE students ( id INTEGER NOT NULL, name VARCHAR, lastname VARCHAR, PRIMARY KEY (id) )
college.db 将在当前工作目录中创建。要检查学生表是否已创建,您可以使用任何 SQLite GUI 工具(例如 SQLiteStudio)打开数据库。
下图显示了在数据库中创建的学生表 −