TGViewer
Диджитализируй! Диджитализируй! @t0digital · 28.5K subscribers
Post #1406 8.77K
Пишу тут свою мини-ORM в курсе для демонстрации возможностей питона и того, что своя ORM — это не космически сложно (не обязательно космически сложно).

В процессе продумывания вариантов, понял, что сейчас можно вообще красиво делать и просто. Типы полей в БД — на type hints, детали (ограничения длины строк, первичные ключи) — через typing.Annotated.

Без метаклассов, без дескрипторов, без __init_subclass__ , без наследования моделей от какого-то базового класса модели.

from dataclasses import dataclass
from typing import Annotated, ClassVar

from orm import (
Identity,
MaxLength,
PrimaryKey,
)


@dataclass(kw_only=True)
class User:
user_id: Annotated[
int,
Identity(),
PrimaryKey(),
]
name: str
email: Annotated[str, MaxLength(255),]
age: int
country: Annotated[str | None, MaxLength(2),] = None

__table__: ClassVar[str] = "users"


и использование в духе:

users = (
db.query(User)
.filter(age__gte=18, country="RU")
.order_by("-age", "name")
.limit(10)
.all()
)


ляпотааа

реализация ~800 строк кода всего

мы там ещё и свой веб-фреймворк бахнем, как без этого:)

а ещё вчера на курс человек из Вьетнама залетел, получается, вышли на планетарный уровень 🚀
  • ❤ 131
  • 🔥 81
  • 👍 28
  • 🎉 8
  • 😁 1
More from @t0digital
  1. Oct 7, 2026нипомню надо в обсидиан посмотреть
  2. Oct 5, 2026Книга по питону) Мало того, что кавычки не те (код не будет работать), так ещё и там, где…
  3. Oct 3, 2026GPT-1 — прожил 248 дней GPT-2 — прожил 469 дней GPT-3 — прожил 916 дней GPT-3.5 — прожил 1…
  4. Oct 2, 2026Не без толики забавы наблюдаю, как любители клёооот получили от своей обожествляемой компа…
  5. Oct 1, 2026ютуп дизайн сменил сколько лет сколько зим) непривычно сижу диджитализирую под прекрасную…
  6. Oct 1, 2026построй AI жопку за 27 (с половиной) минут Жора Мудрый, консультирует Microsoft и ИП Амбар…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →