Метод drop_all
Метод drop_all применяется к объекту
SQLAlchemy и удаляет все таблицы, которые
зарегистрированы в метаданных. Первым параметром
передаётся объект bind - подключение к базе
данных, обычно это engine. Вторым необязательным
параметром передаётся checkfirst - если он
равен True, таблицы удаляются только при
их наличии. Метод не возвращает результат и
выполняет SQL-команды DROP TABLE для каждой
таблицы.
Синтаксис
db.drop_all(bind=None, checkfirst=True)
Пример
Давайте создадим приложение Flask с двумя моделями и удалим все таблицы из базы данных:
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))
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
with app.app_context():
db.create_all()
db.drop_all()
print('All tables dropped')
Результат выполнения кода:
"All tables dropped"
Пример
Давайте проверим, что таблицы действительно удалены, с помощью инспектора базы данных:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import inspect
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()
db.drop_all()
inspector = inspect(db.engine)
res = inspector.get_table_names()
print(res)
Результат выполнения кода:
[]
Пример
Давайте удалим таблицы с параметром checkfirst=False,
чтобы пропустить проверку наличия таблиц:
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()
db.drop_all(checkfirst=False)
print('Dropped without check')
Результат выполнения кода:
"Dropped without check"
Смотрите также
-
класс
SQLAlchemy,
который предоставляет доступ к базе данных -
метод
create_all,
который создаёт все таблицы в базе данных -
атрибут
metadata,
который хранит информацию о таблицах -
атрибут
engine,
который используется как подключение к базе данных