Атрибут metadata
Атрибут metadata применяется к классу SQLAlchemy
и возвращает объект MetaData. Этот объект хранит
описание всех таблиц, столбцов, индексов и ограничений,
которые были определены в приложении. Атрибут не принимает
параметров и доступен только для чтения. Его удобно
использовать для создания таблиц через create_all
и удаления через drop_all.
Синтаксис
db.metadata
Пример
Давайте создадим приложение Flask с подключением к базе данных SQLite и выведем информацию о метаданных:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
with app.app_context():
res = list(db.metadata.tables.keys())
print(res)
Результат выполнения кода:
['user']
Пример
Давайте создадим все таблицы, описанные в метаданных,
и выведем список столбцов таблицы user:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
with app.app_context():
db.create_all()
res = [col.name for col in db.metadata.tables['user'].columns]
print(res)
Результат выполнения кода:
['id', 'name']
Пример
Давайте проверим, содержит ли объект metadata
определённую таблицу:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
with app.app_context():
res = 'user' in db.metadata.tables
print(res)
Результат выполнения кода:
True
Смотрите также
-
класс
SQLAlchemy,
который предоставляет доступ к базе данных -
метод
create_all,
который создаёт таблицы из метаданных -
метод
drop_all,
который удаляет таблицы из метаданных -
атрибут
Model,
который является базовым классом для моделей