Метод tometadata класса Table
Метод tometadata класса Table создает
новый объект таблицы, который является копией
исходной таблицы, но привязан к другой коллекции
MetaData. Первым параметром метод принимает
целевую коллекцию MetaData, в которую будет
перенесена таблица. Вторым необязательным
параметром передается словарь schema для
переопределения схемы. Метод возвращает новый
объект Table, а исходная таблица остается
без изменений.
Синтаксис
Table.tometadata(metadata, [schema])
Пример
Давайте создадим таблицу в одной коллекции
MetaData и перенесем ее в другую:
from sqlalchemy import MetaData, Table, Column, Integer, String
metadata1 = MetaData()
metadata2 = MetaData()
table1 = Table(
'articles',
metadata1,
Column('id', Integer, primary_key=True),
Column('title', String),
)
table2 = table1.tometadata(metadata2)
print(table1.metadata is metadata1)
print(table2.metadata is metadata2)
print(table1 is table2)
Результат выполнения кода:
True
True
False
Пример
Давайте убедимся, что новая таблица содержит те же колонки, что и исходная:
from sqlalchemy import MetaData, Table, Column, Integer, String
metadata1 = MetaData()
metadata2 = MetaData()
table1 = Table(
'articles',
metadata1,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
)
table2 = table1.tometadata(metadata2)
print([col.name for col in table2.columns])
print(table2.name)
Результат выполнения кода:
['id', 'title', 'text']
"articles"
Пример
Давайте переопределим схему при переносе таблицы
с помощью параметра schema:
from sqlalchemy import MetaData, Table, Column, Integer, String
metadata1 = MetaData()
metadata2 = MetaData()
table1 = Table(
'articles',
metadata1,
Column('id', Integer, primary_key=True),
Column('title', String),
)
table2 = table1.tometadata(metadata2, schema='archive')
print(table1.schema)
print(table2.schema)
print(table2.fullname)
Результат выполнения кода:
None
"archive"
"archive.articles"