Метод get_multi_columns класса Inspector
Метод get_multi_columns класса Inspector возвращает
сведения о колонках сразу для нескольких таблиц.
Первым параметром метод принимает словарь, где ключами
выступают имена схем, а значениями - списки имен таблиц.
Если передать пустой список таблиц, метод вернет колонки
всех таблиц указанной схемы. Вторым параметром можно
передать имя схемы, используемой по умолчанию.
Синтаксис
inspector.get_multi_columns(schema_tables, [schema])
Пример
Давайте создадим движок и получим колонки всех таблиц схемы по умолчанию:
from sqlalchemy import create_engine, inspect
engine = create_engine('sqlite:///:memory:')
with engine.begin() as conn:
conn.exec_driver_sql(
'CREATE TABLE articles ('
'id INTEGER PRIMARY KEY, '
'title VARCHAR(100), '
'text TEXT)'
)
conn.exec_driver_sql(
'CREATE TABLE users ('
'id INTEGER PRIMARY KEY, '
'name VARCHAR(50))'
)
inspector = inspect(engine)
res = inspector.get_multi_columns({None: []})
for table_name, columns in res.items():
print(table_name)
for column in columns:
print(' ', column['name'], column['type'])
Результат выполнения кода:
articles
id INTEGER
title VARCHAR(100)
text TEXT
users
id INTEGER
name VARCHAR(50)
Пример
Давайте получим колонки только одной конкретной таблицы, передав ее имя в списке:
from sqlalchemy import create_engine, inspect
engine = create_engine('sqlite:///:memory:')
with engine.begin() as conn:
conn.exec_driver_sql(
'CREATE TABLE articles ('
'id INTEGER PRIMARY KEY, '
'title VARCHAR(100), '
'text TEXT)'
)
conn.exec_driver_sql(
'CREATE TABLE users ('
'id INTEGER PRIMARY KEY, '
'name VARCHAR(50))'
)
inspector = inspect(engine)
res = inspector.get_multi_columns({None: ['articles']})
for table_name, columns in res.items():
print(table_name)
for column in columns:
print(' ', column['name'])
Результат выполнения кода:
articles
id
title
text
Пример
Давайте выведем подробную информацию о каждой колонке,
включая признак первичного ключа и допустимость значения
NULL:
from sqlalchemy import create_engine, inspect
engine = create_engine('sqlite:///:memory:')
with engine.begin() as conn:
conn.exec_driver_sql(
'CREATE TABLE articles ('
'id INTEGER PRIMARY KEY, '
'title VARCHAR(100) NOT NULL, '
'status VARCHAR(20))'
)
inspector = inspect(engine)
res = inspector.get_multi_columns({None: ['articles']})
for table_name, columns in res.items():
for column in columns:
print(column['name'])
print(' type:', column['type'])
print(' nullable:', column['nullable'])
print(' primary key:', column['primary_key'])
Результат выполнения кода:
id
type: INTEGER
nullable: False
primary key: 1
title
type: VARCHAR(100)
nullable: False
primary key: 0
status
type: VARCHAR(20)
nullable: True
primary key: 0
Пример
Давайте получим колонки сразу для нескольких таблиц, перечислив их в списке:
from sqlalchemy import create_engine, inspect
engine = create_engine('sqlite:///:memory:')
with engine.begin() as conn:
conn.exec_driver_sql(
'CREATE TABLE articles ('
'id INTEGER PRIMARY KEY, '
'title VARCHAR(100))'
)
conn.exec_driver_sql(
'CREATE TABLE users ('
'id INTEGER PRIMARY KEY, '
'name VARCHAR(50))'
)
conn.exec_driver_sql(
'CREATE TABLE comments ('
'id INTEGER PRIMARY KEY, '
'num INTEGER)'
)
inspector = inspect(engine)
res = inspector.get_multi_columns(
{None: ['articles', 'users']}
)
for table_name, columns in res.items():
names = [column['name'] for column in columns]
print(table_name, names)
Результат выполнения кода:
articles ['id', 'title']
users ['id', 'name']
Смотрите также
-
класс
Inspector,
который предоставляет доступ к метаданным базы данных -
метод
get_columns,
который возвращает колонки одной таблицы -
метод
get_table_names,
который возвращает список имен таблиц -
метод
get_pk_constraint,
который возвращает информацию о первичном ключе