Атрибут engine
Атрибут engine доступен у экземпляра класса SQLAlchemy после инициализации приложения Flask. Он возвращает объект Engine из библиотеки SQLAlchemy, который представляет собой низкоуровневый интерфейс для работы с базой данных. Через этот объект можно открывать соединения, выполнять SQL-запросы напрямую и управлять пулом соединений.
Атрибут не принимает параметров. Обращение к нему происходит через точку: db.engine, где db - это экземпляр класса SQLAlchemy. Объект Engine создаётся автоматически при вызове метода init_app или при инициализации расширения.
Синтаксис
db.engine
Пример
Давайте создадим приложение Flask с базой данных SQLite и получим объект engine:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
with app.app_context():
res = db.engine
print(res)
Результат выполнения кода:
Engine(sqlite:///site.db)
Пример
Давайте выполним прямой SQL-запрос через соединение, полученное из engine:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
with app.app_context():
with db.engine.connect() as conn:
res = conn.execute(text('SELECT 1')).scalar()
print(res)
Результат выполнения кода:
1
Пример
Давайте посмотрим на URL базы данных через атрибут url объекта engine:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
with app.app_context():
res = db.engine.url
print(res)
Результат выполнения кода:
sqlite:///site.db
Смотрите также
-
класс
SQLAlchemy,
который предоставляет доступ к базе данных -
метод
init_app,
который инициализирует расширение для приложения -
атрибут
session,
который возвращает объект сессии для работы с моделями -
атрибут
metadata,
который хранит информацию о таблицах базы данных