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

Атрибут schema класса MetaData

Атрибут schema класса MetaData хранит имя схемы базы данных, которая используется по умолчанию для всех таблиц, регистрируемых в этом объекте метаданных. Значением атрибута является строка с именем схемы либо None, если схема не задана. Атрибут можно передать при создании объекта MetaData параметром schema, а также изменить напрямую после создания. Если у таблицы явно указана своя схема, то она имеет приоритет над значением атрибута.

Синтаксис

MetaData(schema=None) metadata.schema = 'schema_name'

Пример

Давайте создадим объект MetaData со схемой по умолчанию и посмотрим на значение атрибута:

from sqlalchemy import MetaData metadata = MetaData(schema='myschema') print(metadata.schema)

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

"myschema"

Пример

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

<+python+> from sqlalchemy import MetaData, Table, Column, Integer, String metadata = MetaData(schema='myschema') articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) print(articles.schema) print(articles.fullname) <-python+>

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

"myschema" "myschema.articles"

Пример

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

<+python+> from sqlalchemy import MetaData, Table, Column, Integer, String metadata = MetaData(schema='myschema') articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), schema='otherschema', ) print(articles.schema) print(articles.fullname) <-python+>

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

"otherschema" "otherschema.articles"

Пример

Давайте изменим значение атрибута schema уже после создания объекта MetaData:

<+python+> from sqlalchemy import MetaData, Table, Column, Integer, String metadata = MetaData() print(metadata.schema) metadata.schema = 'myschema' print(metadata.schema) articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) print(articles.fullname) <-python+>

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

"None" "myschema" "myschema.articles"

Пример

Давайте сгенерируем SQL-запрос создания таблицы со схемой по умолчанию:

<+python+> from sqlalchemy import MetaData, Table, Column, Integer, String from sqlalchemy.schema import CreateTable from sqlalchemy.dialects import sqlite metadata = MetaData(schema='myschema') articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) print(CreateTable(articles).compile(dialect=sqlite.dialect())) <-python+>

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

CREATE TABLE myschema.articles ( id INTEGER NOT NULL, title VARCHAR, PRIMARY KEY (id) )

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

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