Класс SQLAlchemy
Класс SQLAlchemy применяется для подключения
базы данных к приложению Flask. Он объединяет
возможности ORM SQLAlchemy и контекст приложения
Flask. Первым параметром передаётся объект
приложения, а необязательным параметром model_class
задаётся базовый класс для моделей. После создания
экземпляра класса доступны атрибуты Model,
session, metadata и engine, а также
методы create_all, drop_all и другие.
Синтаксис
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app, model_class=Model)
Пример
Давайте подключим базу данных SQLite и создадим простую модель:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
with app.app_context():
db.create_all()
Результат выполнения кода:
Таблица user создана в базе данных app.db
Пример
Давайте добавим запись в базу и прочитаем её:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
with app.app_context():
db.create_all()
user = User(name='abcde')
db.session.add(user)
db.session.commit()
res = User.query.all()
print(res)
Результат выполнения кода:
[<User 1>]
Пример
Давайте используем метод get_or_404 для поиска
записи по идентификатору:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
@app.route('/user/<int:id>')
def user(id):
user = User.query.get_or_404(id)
return user.name
Результат выполнения кода для адреса /user/1:
abcde
Смотрите также
-
метод
init_app,
который связывает SQLAlchemy с приложением -
метод
create_all,
который создаёт все таблицы в базе данных -
атрибут
Model,
который хранит базовый класс для моделей -
атрибут
session,
который предоставляет доступ к сессии базы данных