TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
Диджитализируй!

4 Oct, 13:36

Telegram'da ochish Ulashish Shikoyat qilish

Пишу тут свою мини-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 строк кода всего

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

а ещё вчера на курс человек из Вьетнама залетел, получается, вышли на планетарный уровень 🚀

8k 0 29 66 243
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot