Класс CreateTable
Класс CreateTable представляет
DDL-выражение для создания таблицы в базе
данных. Он принимает объект таблицы Table
первым параметром. Дополнительными параметрами
можно передать флаги if_not_exists
и bind. Класс используется для
генерации SQL-запроса CREATE TABLE
и его выполнения через соединение.
Синтаксис
CreateTable(table, [if_not_exists], [bind])
Пример
Давайте создадим объект таблицы и построим
для него выражение CreateTable:
from sqlalchemy import MetaData, Table, Column, Integer, String
from sqlalchemy.schema import CreateTable
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
Column('status', String),
Column('num', Integer),
)
stmt = CreateTable(articles)
print(stmt)
Результат выполнения кода:
CREATE TABLE articles (
id INTEGER NOT NULL,
title VARCHAR,
text VARCHAR,
status VARCHAR,
num INTEGER,
PRIMARY KEY (id)
)
Пример
Давайте выполним выражение CreateTable
через соединение с базой данных:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy.schema import CreateTable
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
Column('status', String),
Column('num', Integer),
)
with engine.connect() as conn:
conn.execute(CreateTable(articles))
conn.commit()
print('table created')
Результат выполнения кода:
"table created"
Пример
Давайте передадим параметр if_not_exists,
чтобы избежать ошибки при повторном создании
таблицы:
from sqlalchemy import MetaData, Table, Column, Integer, String
from sqlalchemy.schema import CreateTable
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
Column('status', String),
Column('num', Integer),
)
stmt = CreateTable(articles, if_not_exists=True)
print(stmt)
Итоговый SQL запрос:
CREATE TABLE IF NOT EXISTS articles (
id INTEGER NOT NULL,
title VARCHAR,
text VARCHAR,
status VARCHAR,
num INTEGER,
PRIMARY KEY (id)
)
Смотрите также
-
класс
DropTable,
который представляет выражение DROP TABLE -
класс
PrimaryKeyConstraint,
который задает первичный ключ таблицы -
класс
ForeignKeyConstraint,
который задает внешний ключ таблицы -
класс
UniqueConstraint,
который задает уникальность столбцов