Лабораторна робота №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. Зв'язки між таблицями:
   Визначте зв'язки між таблицями (один до одного, один до багатьох). Реалізуйте ці зв'язки у моделях та використовуйте їх при операціях з базою даних.