Лабораторна робота №4
Теоретичні відомості:
1. Підключення та Налаштування Бази Даних:
Для підключення та роботи з базою даних в Flask можна використовувати різні розширення, такі як Flask-SQLAlchemy або Flask-MySQLdb.
Приклад підключення до SQLite з використанням Flask-SQLAlchemy:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
2. Створення та Ініціалізація Таблиць
Моделі даних, які відображатимуть таблиці в базі даних.
Приклад моделі користувача:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
Створення таблиць:
from your_flask_app import db
db.create_all()
3. Операції CRUD та Використання ORM
Використовуйте ORM (Object-Relational Mapping) для взаємодії з базою даних безпосередньо через об'єкти Python.
- Приклад створення запису:
new_user = User(username='john_doe', email='john@example.com', password='hashed_password')
db.session.add(new_user)
db.session.commit()
- Приклад читання запису:
user = User.query.filter_by(username='john_doe').first()
- Приклад оновлення запису:
user.email = 'new_email@example.com'
db.session.commit()
- Приклад видалення запису:
db.session.delete(user)
db.session.commit()
4. Зв'язки Між Таблицями
Приклад відношення один до багатьох:
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
Загальний приклад коду
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
@app.route("/")
def home():
users = User.query.all()
return render_template("index.html", users=users)
@app.route("/user/<int:user_id>")
def user_posts(user_id):
user = User.query.get_or_404(user_id)
posts = user.posts
return render_template("user_posts.html", user=user, posts=posts)
if __name__ == "__main__":
app.run(debug=True)
У цьому прикладі визначаються дві моделі (`User` та `Post`) для користувачів та їхніх постів. Створюються таблиці у базі даних, і реалізуються прості маршрути для відображення користувачів та їхніх постів.
**Лабораторна робота 5: Робота з базою даних у Flask**
**Мета лабораторної роботи:** Розгортання та використання бази даних SQLite або MySQL для зберігання даних у веб-сервісі на Flask.
Завдання:
1. Встановлення та налаштування бази даних:
Встановіть відповідний драйвер для SQLite для Flask ( Flask-SQLAlchemy ) .
Підключіть базу даних до вашого Flask-додатка.
2. Створення моделі даних:
- Визначте 2 моделі даних для об'єктів, які будуть зберігатися в базі даних. Наприклад, модель користувача, модель допису тощо.
3. Створення та ініціалізація таблиць:
Створіть скрипт для створення таблиць у базі даних на основі визначених моделей.
Запустіть цей скрипт для створення необхідних таблиць у базі даних.
4. Реалізація операцій CRUD
Реалізуйте операції CRUD (створення, читання, оновлення, видалення) для об'єктів, які зберігаються в базі даних. Додайте API-маршрути для взаємодії з цими об'єктами.
5.Використання ORM:
Використовуйте Object-Relational Mapping (ORM) для зручного взаємодії з базою даних. Наприклад, використовуйте SQLAlchemy для Flask.
6. Зв'язки між таблицями:
Визначте зв'язки між таблицями (один до одного, один до багатьох). Реалізуйте ці зв'язки у моделях та використовуйте їх при операціях з базою даних.