Flask является мощным инструментом для создания веб-приложений на Python. Для работы с базами данных, особенно реляционными, одной из самых популярных библиотек является SQLAlchemy. В этой статье мы рассмотрим процесс интеграции SQLAlchemy во Flask-приложение.
Установка Flask-SQLAlchemy
Для удобной интеграции SQLAlchemy во Flask существует расширение Flask-SQLAlchemy. Установите его с помощью pip:
pip install Flask-SQLAlchemy
Настройка Flask-SQLAlchemy
После установки добавьте настройки для вашего приложения:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
Здесь мы указали тип базы данных (SQLite) и путь к файлу базы данных ‘example.db’. Опция ‘SQLALCHEMY_TRACK_MODIFICATIONS’ отключает предупреждения о модификации объектов.
Создание моделей данных
Модели данных представляют структуру таблиц базы данных в виде классов Python. Рассмотрим пример модели User:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
Здесь мы создали класс User с полями id, username и email, а также методом __repr__()
для представления объекта в удобочитаемом виде.
Создание таблиц и манипуляция данными
Для создания таблиц в базе данных используйте метод db.create_all()
:
db.create_all()
Теперь можно выполнять операции с данными, такие как добавление, изменение и удаление записей:
# Добавление пользователя
user = User(username='John', email='[email protected]')
db.session.add(user)
db.session.commit()
# Запрос пользователей
users = User.query.all()
# Изменение пользователя
user = User.query.get(1)
user.username = 'Jane'
db.session.commit()
# Удаление пользователя
user = User.query.get(1)
db.session.delete(user)
db.session.commit()
Использование моделей в маршрутах
Используйте модели данных для обработки запросов пользователей и работы с базой данных:
@app.route('/user/<username>')
def show_user(username):
user = User.query.filter_by(username=username).first()
if user:
return f"User {user.username}'s email is {user.email}"
else:
return "User not found"
Заключение
Интеграция SQLAlchemy во Flask обеспечивает эффективное и гибкое взаимодействие с базами данных для ваших веб-приложений. Используя расширение Flask-SQLAlchemy, вы можете легко создавать модели данных, манипулировать данными и интегрировать модели в маршруты вашего приложения. Это позволяет вам создавать мощные и надежные приложения, обеспечивая корректное хранение и обработку данных.