Класс MetaData
Класс MetaData представляет собой
контейнер, в котором хранится вся информация
о структуре базы данных: таблицы, столбцы,
ограничения, индексы и связи. Объект
MetaData выступает точкой сбора для
описаний, созданных через Table,
Column и декларативные модели. Без
объекта MetaData невозможно создать
ни одну таблицу и выполнить операции
create_all или drop_all.
Конструктор класса не принимает обязательных
параметров, но может получать именованные
аргументы, например schema и
naming_convention.
Синтаксис
MetaData(schema=None, naming_convention=None)
Пример
Давайте создадим объект MetaData
и привяжем к нему одну таблицу:
from sqlalchemy import MetaData, Table, Column, Integer, String
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
)
print(metadata.tables.keys())
Результат выполнения кода:
"dict_keys(['articles'])"
Пример
Давайте создадим объект MetaData
с параметром schema и посмотрим,
как он применяется к таблицам:
from sqlalchemy import MetaData, Table, Column, Integer, String
metadata = MetaData(schema='main')
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
)
print(articles.schema)
print(metadata.schema)
Результат выполнения кода:
"main"
"main"
Пример
Давайте используем объект MetaData
для создания всех таблиц в базе данных:
from sqlalchemy import MetaData, Table, Column, Integer, String, create_engine
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
)
metadata.create_all(engine)
print(metadata.sorted_tables)
Результат выполнения кода:
[Table('articles', MetaData(), Column('id', Integer(), table=<articles>, primary_key=True, nullable=False), Column('title', String(), table=<articles>), schema=None)]
Итоговый SQL запрос:
CREATE TABLE articles (
id INTEGER NOT NULL,
title VARCHAR,
PRIMARY KEY (id)
)
Смотрите также
-
метод
create_all,
который создает все таблицы в базе данных -
метод
drop_all,
который удаляет все таблицы из базы данных -
атрибут
tables,
который хранит словарь всех таблиц -
атрибут
sorted_tables,
который возвращает таблицы в порядке создания