ORM: pracy z bazą danych za pomocą Python obiektów
Wiersze tabeli jako obiekty Python — wygodne, ale ORM i tak tworzy i wykonuje zwykły SQL.
Rozdział 22.22 napisała tekstowe zapytania w SQL-. ORM (Object-Relational Mapper — mapowanie obiektowo-relacyjne) — to biblioteka, która pozwala pracować z łańcuch znakówtabelami jak z zwykłymi obiektami Python, a nie tworzyć SQL-tekst ręcznie. Różne ORM mają różny API — oto to samo zapytanie i ta sama wstawka w dwóch najbardziej widocznych ekosystemach ORM i Python:
| Akcja | SQL bezpośrednio | Django ORM | SQLAlchemy 2.x |
|---|---|---|---|
| Przeczytać niewykonane zadania | SELECT id, title FROM tasks WHERE done = 0 | Task.objects.filter(done=False) | select(Task).where(Task.done.is_(False)) |
| Dodaj nowe zadanie | INSERT INTO tasks (title) VALUES (?) | Task.objects.create(title="Купить хлеб") | session.add(Task(title="Купить хлеб")) |
SQLAlchemy (opisuje siebie jako „zestaw narzędzi SQL i konwerter obiektowo-relacyjny dla Python” ORM Django jest częścią samego frameworka i jest mu bliski zintegrowane to różne biblioteki o różnych API, a nie dwie nazwy tego samego narzędzi.
Dlaczego projekt końcowy wykorzystuje sqlite3
Do wersji roboczej tego rozdziału (Rozdział 22.29) wybrano moduł bezpośredni
sqlite3, nie ORM: celem tego rozdziału jest zrozumienie, co dokładnie
Dzieje się z danymi na każdym etapie, nie ukrywając ich wcześniej za warstwą abstrakcji
jak ta abstrakcja stanie się jasna. ORM jest użytecznym i powszechnym narzędziem dla
prawdziwych projektów, ale tutaj odciągałby uwagę od samej idei rozdziału.