📜  SQLAlchemy核心-创建表

📅  最后修改于: 2020-11-27 07:32:56             🧑  作者: Mango


现在让我们讨论如何使用create table函数。

SQL表达式语言根据表列构造其表达式。 SQLAlchemy Column对象表示数据库表中的一,而该表又由Tableobject表示。元数据包含表和关联对象的定义,例如索引,视图,触发器等。

因此,来自SQLAlchemy Metadata的MetaData类的对象是Table对象及其关联模式构造的集合。它包含Table对象的集合以及对Engine或Connection的可选绑定。

from sqlalchemy import MetaData
meta = MetaData()

MetaData类的构造函数可以具有默认为None的bind和schema参数。

接下来,我们使用Table构造在上述元数据目录中定义所有,该构造类似于常规的SQL CREATE TABLE语句。

Table类的对象表示数据库中的对应表。构造函数采用以下参数-

Name Name of the table
Metadata MetaData object that will hold this table
Column(s) One or more objects of column class

列对象表示数据库表中。构造函数采用名称,类型和其他参数,例如primary_key,自动递增和其他约束。

SQLAlchemy将Python数据与其中定义的最佳通用列数据类型进行匹配。一些通用数据类型是-

  • 大整数
  • 布尔型
  • 日期
  • 约会时间
  • 浮动
  • 整数
  • 数字
  • 小整数
  • 文本
  • 时间

要在大学数据库中创建一个学生表,请使用以下代码片段-

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,其中包含一个学生表。

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将在当前工作目录中创建。要检查是否创建了students表,可以使用任何SQLite GUI工具(如SQLiteStudio)打开数据库。

下图显示了在数据库中创建的students表-

学生桌