PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱PyFunctional.

PyFunctional
— мощная Python-библиотека для работы с потоками данных в функциональном стиле!

🔹Возможности:

🔘Цепочки операций: seq(1, 2, 3).map(...).filter(...).reduce(...).

🔘Поддержка чтения/записи файлов: text, csv, json, jsonl, sqlite, сжатые форматы.

🔘Параллельное выполнение через pseq.

🔘Полное покрытие тестами и стабильный CI.

🔘Вдохновлена Scala, Apache Spark и LINQ.

#Python #PyFunctional #DataPipeline #FunctionalProgramming #BigData #DataProcessing #SQLite #Pandas #DataEngineering #PythonTips #OpenSource #DevTools

📱Ссылка на репозиторий:
https://github.com/EntilZha/PyFunctional
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥2
📱Aiosqlitepool.

aiosqlitepool — пул соединений для SQLite в asyncio-приложениях.

aiosqlitepool — это высокопроизводительный пул соединений для асинхронных SQLite-приложений. Он устраняет издержки на создание/закрытие соединений и ускоряет работу с БД за счёт повторного использования «горячих» соединений.

⚠️Это не драйвер SQLite, а надстройка над aiosqlite, повышающая производительность.

❓Зачем использовать aiosqlitepool:

🔘Устраняет накладные расходы на соединения.

🔘Ускоряет запросы за счёт кэша в памяти.

🔘Увеличивает пропускную способность при высокой нагрузке.

🔹Пример базового использования:
async with pool.connection() as conn:
await conn.execute("INSERT INTO users VALUES (?)", ("Alice",))
await conn.commit()


❓Когда стоит использовать:

🔘5–10 запросов к БД в секунду.

🔘30 запросов в секунду от фоновых воркеров.

🔘P99 латентность < 50 мс.

🔘минимизация нагрузки на CPU/диск.

#Python #SQLite #AsyncIO #FastAPI #aiosqlite #aiosqlitepool #Backend #Performance #DevTools #WebDev #DataEngineering #Database

📱Ссылка на репозиторий:
https://github.com/slaily/aiosqlitepool
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2⚡1
📱Coffy.

Coffy
— это лёгкая embedded-база данных на чистом Python.

✅Поддерживает NoSQL, SQL и Graph модели — всё в чистом Python.

✅Идеально для быстрых прототипов, скриптов и локальных приложений.

🔹Возможности:

🔘Локальное хранение (JSON, SQLite).

🔘In-memory режим (:memory: или None).

🔘Без сервера, всё работает локально.

🔘Логические и сравнительные операторы.

🔘Единый интерфейс запросов.

🔘CLI из коробки.

🔻Engines:

🔘coffy.graph → локальная графовая база (на базе NetworkX).

🔘coffy.nosql → документное хранилище с chainable-запросами.

🔘coffy.sql → тонкая обёртка над SQLite.

#Coffy #Python #Database #NoSQL #SQL #GraphDB #SQLite #EmbeddedDB #LocalFirst #DataScience #OpenSource

📱Ссылка на репозиторий:
https://github.com/nsarathy/coffy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
📱Onlymaps.

Onlymaps
— лёгкая Python-библиотека (micro-ORM) для работы с базой данных через обычные SQL-запросы.

❓Что делает:

🔘Позволяет писать чистый SQL, при этом автоматически мапит результаты в Python-объекты.

🔘Поддержка синхронного и асинхронного выполнения запросов.

🔘Типизация и валидация через Pydantic.

🔘Работает с PostgreSQL, MySQL, MariaDB, MS SQL Server и SQLite.

🔘Поддержка connection pooling для многопоточных приложений.

🔘Удобные обёртки для JSON и bulk-запросов.

🔘Простое управление транзакциями через контекстный менеджер.

🔻Пример использования:

from onlymaps import connect
from pydantic import BaseModel

class User(BaseModel):
name: str
age: int

with connect("postgresql://user:pass@localhost:5432/mydb") as db:
users: list[User] = db.fetch_many(User, "SELECT name, age FROM users")


🔹Особенности:

🔘Можно использовать как обычные типы Python (tuple, dict) или модели Pydantic для маппинга.

🔘Контейнеры (tuple, list, set) для данных без имён колонок.

🔘Модели (dict, dataclass, BaseModel) для сохранения структуры и валидации.

🔘Полная поддержка транзакций и безопасное выполнение bulk-запросов.

#Python #ORM #SQL #Pydantic #PostgreSQL #MySQL #SQLite #AsyncPython #MicroORM #DatabaseTools

📱Ссылка на репозиторий:
https://github.com/manoss96/onlymaps
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍2
📱Embar.

Embar — это новый ORM для Python с сильной типизацией и SQL‑образным синтаксисом, вдохновлённый Drizzle и рассчитанный на Python 3.14 и выше.

❓Что такое Embar:

Embar ставит целью сделать работу с БД в Python максимально типобезопасной: ваш type checker знает валидные аргументы и точные типы результатов, а LSP подсказывает, как собрать нужный запрос. Запросы пишутся в SQL‑подобном стиле, но при этом вы всегда можете просто использовать сырой SQL, когда нужно.

🔹Поддерживаемые БД и стек:

Сейчас Embar поддерживает три клиента: SQLite 3 через стандартную библиотеку, Postgres через psycopg3 и Postgres через async‑клиент psycopg3 (рекомендуется именно async‑вариант). Для валидации используется Pydantic, а дизайн библиотеки хорошо ложится на привычные сценарии с FastAPI.

🔻Фичи и ограничения:

Embar активно использует новые template strings (t‑строки), поэтому поддерживает только Python 3.14. Есть CLI для генерации миграций с помощью LLM и ANTHROPIC_API_KEY, но корректный diff миграций пока в разработке.

#python #orm #asyncio #postgres #sqlite #typing #pydantic #python314 #fastapi #drizzleinspired

📱Ссылка на репозиторий:
https://github.com/carderne/embar
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥1
📱Jetbase.

Jetbase — это лёгкий миграционный инструмент для БД в Python‑проектах: SQL‑файлы с версиями, апгрейды/роллбеки, валидация и блокировка миграций, плюс поддержка Postgres, SQLite, Snowflake и MySQL.

❓Что умеет:

🔘Простая инициализация: pip install jetbase → jetbase init создаёт каталог jetbase/ c migrations/ и env.py.

🔘Версионированные миграции в виде SQL‑файлов V<version>__<description>.sql, c блоками -- upgrade и -- rollback, и командами jetbase upgrade, jetbase history, jetbase status.

🔘Безопасность: file checksum’ы, миграционный lock (один процесс за раз), линейная история (всегда один head, конфликт версий падает сразу), repeatable‑миграции.

🔹Поддерживаемые БД и драйверы:

🔘Поддерживаются PostgreSQL, SQLite, Snowflake и MySQL через SQLAlchemy URL в jetbase/env.py.

🔘Для небустроенного SQLite требуются драйверы: например, psycopg2 для Postgres или соответствующий Snowflake/MySQL драйвер.

🔻Пример:

Настройка подключения, затем:
  jetbase new "create users table" -v 1

# редактируем V1__create_users_table.sql
jetbase upgrade

SQL: в -- upgrade создаём таблицы, в -- rollback — удаляем, что упрощает откаты.

#Jetbase #Python #DatabaseMigrations #PostgreSQL #SQLite #Snowflake #MySQL #SQLAlchemy #DevTools #DataEngineering

📱Ссылка на репозиторий:
https://github.com/jetbase-hq/jetbase
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥11
📱uSQLite.

usqlite — это порт SQLite для MicroPython: модуль С/μPython с API в стиле sqlite3, но заточенный под микроконтроллеры, ограниченную память и кастомную сборку прошивки.

❓Зачем это нужно:

🔘Даёт полноценный SQL‑движок SQLite прямо на ESP32, Pico, Unix‑портах, Windows и Pybricks‑хабах, причём базы совместимы с обычным SQLite (DB Browser, десктопные приложения).

🔘Интерфейс совместим с DB‑API 2.0 (PEP 249) и стандартным sqlite3, так что большинство привычных паттернов работы с БД переносится почти без изменений.

🔻Пример:
  import usqlite

if not usqlite.mem_status():
usqlite.mem_status(True) # включить мониторинг памяти

con = usqlite.connect("data.db")
con.executemany(
"BEGIN TRANSACTION;"
"CREATE TABLE IF NOT EXISTS data (name TEXT, year INT);"
"INSERT INTO data VALUES ('Larry', 1902);"
"INSERT INTO data VALUES ('Curly', 1903);"
"INSERT INTO data VALUES ('Moe', 1897);"
"INSERT INTO data VALUES ('Shemp', 1895);"
"COMMIT;"
)

with con.execute("SELECT * from data") as cur:
for row in cur:
print("stooge:", row)

con.close()
print("usqlite mem - current:", usqlite.mem_current(), "peak:", usqlite.mem_peak())

Поддерживаются параметризованные запросы ?, ?NNN, :name, @name, $name c передачей tuple/list/dict, как в sqlite3.

🔻Сборка и интеграция:

🔘Модуль собирается как C‑расширение в составе прошивки MicroPython: структура проекта micropython/ + modules/usqlite, подключение через корневой micropython.cmake.

🔘В репозитории уже лежит SQLite 3.47.0 (amalgamation), при желании его можно заменить своей сборкой.

🔧Память и конфигурация:

🔘По умолчанию используется кастомный аллокатор поверх GC‑heap MicroPython, плюс функции mem_current(), mem_peak(), mem_status() для контроля потребления.

🔘Через usqlite_config.h можно включать/отключать компоненты SQLite и перейти на статический heap для жёстко лимитированной памяти.

#usqlite #MicroPython #SQLite #Embedded #ESP32 #RaspberryPiPico #IoT #DBAPI #CModule #Firmware

📱Ссылка на репозиторий:
https://github.com/spatialdude/usqlite
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥1
📱Arbalister.

Arbalister — это расширение для JupyterLab, которое позволяет двойным кликом открывать табличные файлы (Parquet, CSV, Avro, ORC, SQLite и другие Arrow‑совместимые форматы) прямо в интерфейсе без написания кода. Расширение состоит из серверной части на Python и клиентской на TypeScript, общающихся через Arrow IPC‑стримы.

🔹Основные возможности:

🔘Поддерживаемые форматы: Parquet, CSV, Avro, ORC, SQLite, Arrow IPC.

🔘Lazy loading: данные подгружаются чанками по мере прокрутки, поэтому можно смотреть файлы больше объёма памяти.

🔘Prefetching: заранее подгружает следующий чанк для плавного скролла.

🔘Настройки чтения: тулбар для выбора разделителя CSV, таблицы в SQLite и других опций.

🔘Расширяемость: сервер даёт Arrow‑стримы, на которых можно строить свои вьюеры.

🔻Установка:

pip install arbalister (требуется JupyterLab >= 4.5.0).

#JupyterLab #Arbalister #ApacheArrow #Parquet #SQLite #DataEngineering #DataScience #Python #QuantStack #OpenSource

📱Ссылка на репозиторий:
https://github.com/QuantStack/Arbalister
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡2👍22
📱Oxyde ORM.

Oxyde ORM — асинхронный type‑safe ORM с Pydantic v2 и быстрым Rust‑ядром, сделанный в духе Django ORM, но с современным API и предсказуемым поведением.

🔹Особенности Oxyde:

🔘Django‑стиль: привычный User.objects.filter(...), аннотации полей и Meta‑класс для таблиц.

🔘Pydantic‑центричность: модели — полноценные Pydantic v2, с валидацией, тайпингом и удобной сериализацией.

🔘Rust‑производительность: генерация и выполнение SQL вынесены в Rust‑core (oxyde-core), что даёт высокий ops/sec в бенчмарках против популярных ORM.

🔘Async‑first: всё на asyncio, с поддержкой PostgreSQL, SQLite и MySQL, транзакций и nested transaction.atomic().

🔘Интеграция с FastAPI: готовый db.lifespan(...) для подключения БД на уровне приложения.

🔻Установка и быстрый старт:

pip install oxyde


from oxyde import Model, Field

class User(Model):
id: int | None = Field(default=None, db_pk=True)
name: str
email: str = Field(db_unique=True)


#python #orm #asyncio #pydantic #rust #fastapi #postgresql #sqlite #mysql

📱Ссылка на репозиторий:
https://github.com/mr-fatalyst/oxyde
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡2👍22
📱Honker.

Honker — это SQLite-расширение, которое приносит в SQLite NOTIFY/LISTEN- логику в стиле Postgres.
Без брокера. Без polling. Без лишней инфраструктуры.

❓Что умеет:

🔘durable pub/sub
🔘очередь задач
🔘event streams
🔘retry, delayed jobs, priority
🔘scheduler по cron
🔘атомарные enqueue вместе с бизнес-транзакцией

Идея простая: если у вас SQLite — то очередь и события должны жить прямо в том же .db файле.
INSERT INTO orders ... и queue.enqueue(...) могут коммититься вместе — это очень удобно и надежно.

❗️Поддерживаются Python, Node.js, Bun, Ruby, Go, Elixir, C++, .NET/C#, JVM и Kotlin.

А для пробуждения процессов используется `PRAGMA data_version`, что дает реакцию почти как push — быстро и без ручного опроса.


#SQLite #Rust #OpenSource #PubSub #Queue #Backend #Python #NodeJS #Kotlin #DotNet #DevTools

📱Ссылка на репозиторий:
https://github.com/russellromney/honker
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍222
📱Dj-lite-tenant.

Dj-lite-tenant -
это экспериментальная библиотека для Django, которая выводит изоляцию данных в мультиарендных (multi-tenant) приложениях на абсолютный максимум. Она автоматически создает отдельную базу данных SQLite для каждого пользователя.
Если вы строите легковесный SaaS или пет-проект, где пользователи не должны пересекаться данными ни при каких обстоятельствах, этот инструмент предлагает элегантное решение без развертывания тяжелых серверов БД.

🔹Основные возможности:

🔘Абсолютная изоляция: Каждый зарегистрированный пользователь получает свой собственный изолированный файл .sqlite3 для указанных в настройках приложений.

🔘Кросс-базовые связи: Связи типа ForeignKey между БД пользователя и общей базой данных (например, таблицей самого User) работают прозрачно благодаря механизму ATTACH DATABASE в SQLite. Django ORM сама генерирует валидные SQL-запросы.

🔘Автоматический роутинг: Специальный Middleware сам определяет текущего пользователя в запросе и направляет все запросы ORM в нужный файл. Есть полная поддержка синхронного и асинхронного выполнения.

🔘Мгновенное создание БД (Шаблоны): Чтобы не гонять миграции при регистрации каждого нового юзера, можно включить опцию USE_DATABASE_TEMPLATE. Первая чистая БД выполнит миграции, сохранится как шаблон, а для новых пользователей файлы будут просто клонироваться за миллисекунды.

🔘Фоновые задачи: Для работы вне контекста HTTP-запроса (например, в Celery-тасках) есть удобный контекстный менеджер: with tenant_db(user):.

🔘Интеграция с админкой: Суперпользователи могут переключаться между базами данных пользователей прямо через стандартную панель Django Admin.

🚀Быстрый старт:

Установка:
uv add dj-lite-tenant
# или pip install dj-lite-tenant


Минимальная настройка в settings.py:
INSTALLED_APPS = [
...
"dj_lite_tenant",
]

MIDDLEWARE = [
...
"django.contrib.auth.middleware.AuthenticationMiddleware",
"dj_lite_tenant.middleware.TenantDatabaseMiddleware", # Строго после Auth
]

DATABASE_ROUTERS = ["dj_lite_tenant.routers.TenantDatabaseRouter"]

DJ_LITE_TENANT = {
"DIR": BASE_DIR / "db/tenants",
"APPS": {"notes"}, # Приложения, данные которых улетят в персональные БД
}

Для применения новых миграций ко всем базам данных пользователей используется специальная команда: python manage.py migrate_tenant_dbs.

⚠️Важное примечание: Автор честно предупреждает, что проект пока очень экспериментальный. В текущем виде он не предназначен для production-сред с высокой нагрузкой, но концепт изоляции на уровне SQLite-файлов выглядит чертовски интересно!

#Django #Python #SQLite #MultiTenant #Backend #WebDev #SaaS #Database #OpenSource

📱Ссылка на репозиторий:
https://github.com/adamghill/dj-lite-tenant
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2⚡1