РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
339 of 711 menu

Метод create_all класса MetaData

Метод create_all класса MetaData создает все таблицы, которые были связаны с данным объектом метаданных, в целевой базе данных. Первым параметром метод принимает объект подключения bind, например движок Engine или соединение Connection. Метод проверяет существование каждой таблицы перед созданием, поэтому повторный вызов не приводит к ошибке. Параметр checkfirst по умолчанию равен True и отвечает за такую проверку.

Синтаксис

MetaData.create_all(bind, [tables], [checkfirst])

Пример

Давайте создадим движок для базы SQLite в памяти и опишем таблицу articles через объект MetaData, а затем создадим ее методом create_all:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String 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) ) metadata.create_all(engine) print(metadata.tables.keys())

Результат выполнения кода:

"dict_keys(['articles'])"

Пример

Давайте посмотрим, какой SQL-запрос выполняет метод create_all при создании таблицы:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:', echo=True) metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine)

Итоговый SQL запрос:

CREATE TABLE articles ( id INTEGER NOT NULL, title VARCHAR, text VARCHAR, status VARCHAR, num INTEGER, PRIMARY KEY (id) )

Пример

Давайте создадим несколько таблиц сразу и убедимся, что метод create_all создает их все:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String) ) users = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String) ) metadata.create_all(engine) print(sorted(metadata.tables.keys()))

Результат выполнения кода:

['articles', 'users']

Пример

Давайте создадим только одну конкретную таблицу, передав ее вторым параметром в метод create_all:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String) ) users = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String) ) metadata.create_all(engine, tables=[articles]) print(sorted(metadata.tables.keys()))

Результат выполнения кода:

['articles', 'users']

Смотрите также

  • класс MetaData,
    который хранит коллекцию таблиц и схем
  • метод drop_all,
    который удаляет все таблицы из базы
  • метод reflect,
    который загружает таблицы из базы в метаданные
  • атрибут tables,
    который содержит словарь всех таблиц
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить