← До фільтрів та технологій

← До списку лабораторних по Python

Python Лабораторна 13: Базовий ORM шар

Технологія: Python

Номер лабораторної: 13 · Рівень: middle

Тема: Моделі через SQLAlchemy

Повний опис / сценарій лабораторної:

Meta: зрозуміти як описувати моделі і працювати з ними через ORM замість сирого SQL.



Krok 1. Встановити SQLAlchemy.

Komandi: cd ~/python_lab1; source .venv/bin/activate; pip install "SQLAlchemy>=2"



Krok 2. Створити файл src/app/orm13.py.

Komanda: cd src; touch app/orm13.py



Krok 3. Описати базову модель User.

Komанда: printf "from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base, Session

engine = create_engine("sqlite:///lab13.db", echo=False)
Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    email = Column(String, nullable=False, unique=True)

Base.metadata.create_all(engine)

if __name__ == "__main__":
    with Session(engine) as session:
        user = User(name="Taras", email="taras@example.com")
        session.add(user)
        session.commit()
" > app/orm13.py



Krok 4. Запустити модуль і перевірити що база створена.

Komanda: export PYTHONPATH=$(pwd); python app/orm13.py; ls lab13.db



Krok 5. Додати запит який отримує користувачів.

Poyasnennya: використай session.query або сучасну селект конструкцію.



Krok 6. Перезапустити скрипт з додатковим друком усіх користувачів.

Poyasnennya: переконайся що уникається дублювання або додай перевірку.



Krok 7. Додати фільтрацію за email.

Poyasnennya: session.query(User).filter(User.email == ...).



Krok 8. Занотувати відмінності між простим sqlite3 і ORM підходом.



Krok 9. Продумати як організувати окремий шар репозиторіїв поверх ORM.



Krok 10. Mini zvit.

Zavdannya: опиши де ORM корисний, а де сирий SQL буде простішим.