Атрибут Model
Атрибут Model является базовым классом для определения моделей базы данных при использовании расширения Flask-SQLAlchemy. Он наследуется от декларативной базы SQLAlchemy и предоставляет удобный интерфейс для описания таблиц, столбцов и связей между ними. Каждый класс, унаследованный от Model, автоматически становится таблицей в базе данных, а его атрибуты - столбцами этой таблицы.
Синтаксис
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class ModelName(db.Model):
__tablename__ = 'table_name'
id = db.Column(db.Integer, primary_key=True)
field = db.Column(db.String(80))
Пример
Давайте создадим простую модель для хранения статей:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text)
with app.app_context():
db.create_all()
После выполнения кода в базе данных будет создана таблица с тремя столбцами: id, title и content.
Пример
Давайте добавим запись в базу данных и выведем её на странице:
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
@app.route('/')
def index():
article = Article(title='hello')
db.session.add(article)
db.session.commit()
res = Article.query.all()
return render_template('index.html', articles=res)
Шаблон для вывода статей:
{% for article in articles %}
<p>{{ article.title }}</p>
{% endfor %}
Результат выполнения кода:
<p>hello</p>
Смотрите также
-
класс
SQLAlchemy,
который управляет подключением к базе данных -
атрибут
metadata,
который содержит информацию о таблицах -
метод
create_all,
который создаёт все таблицы в базе данных -
метод
drop_all,
который удаляет все таблицы из базы данных