Перейти к содержанию

Установка

hare-orm ставится из PyPI через pip; драйверы и интеграции, которые не нужны для SQLite, ставятся дополнительными пакетами. После установки Первая модель описывает модель, создаёт её таблицу и выполняет первые запросы.

pip install hare-orm

hare.__version__ — установленная версия.

Дополнительные пакеты ставятся по необходимости:

pip install hare-orm[asyncpg]        # драйвер PostgreSQL на Python вместо драйвера на Rust
pip install hare-orm[clickhouse-connect]  # диалект ClickHouse по HTTP (clickhouse-connect)
pip install hare-orm[clickhouse-driver]   # диалект ClickHouse по родному протоколу поверх TCP (clickhouse-driver)
pip install hare-orm[sqlite-vec]     # поиск по векторам на SQLite (sqlite-vec)
pip install hare-orm[ipython]        # `hare shell` с IPython
pip install hare-orm[tzlocal]        # часовой пояс машины для функций даты и времени на PostgreSQL и ClickHouse при use_timezone=False
pip install hare-orm[encryption]     # EncryptedTextField / EncryptedJSONField
pip install hare-orm[phone]          # PhoneField читает номер в любом виде (phonenumbers)
pip install hare-orm[opentelemetry]  # трассировка каждого запроса через OpenTelemetry
pip install hare-orm[pydantic]       # JSONField(field_type=...) и схемы моделей hare.contrib.pydantic
pip install hare-orm[yaml]           # файл настроек .yml/.yaml (PyYAML)
pip install hare-orm[faker]          # объявления Faker() в hare.contrib.factories
pip install hare-orm[request-query]  # hare.contrib.request_query
pip install hare-orm[litestar]       # hare.contrib.frameworks.litestar
pip install hare-orm[fastapi]        # hare.contrib.frameworks.fastapi
pip install hare-orm[robyn]          # hare.contrib.frameworks.robyn
pip install hare-orm[taskiq]         # hare.contrib.taskiq
pip install hare-orm[redis]          # RedisWakeup и RedisStreamsDelivery очереди исходящих событий
pip install hare-orm[kafka]          # KafkaWakeup и KafkaDelivery очереди исходящих событий
pip install hare-orm[rabbitmq]       # RabbitMQWakeup и RabbitMQDelivery очереди исходящих событий
pip install hare-orm[http]           # WebhookDelivery очереди исходящих событий
pip install hare-orm[mypy]           # плагин mypy, проверяющий запросы (hare.contrib.mypy)
pip install hare-orm[pyright]        # `hare stubs` — заглушки моделей для pyright и Pylance
pip install hare-orm[pytest]         # плагин pytest для hare (pytest, pytest-asyncio)

Поддерживаемые версии

Полная поддержка обещается только на Linux: каждая база ниже проверяется там. На Windows и macOS hare ставится и работает для разработки — wheel-пакеты, CLI и тесты, не читающие базу, проверяются на всех трёх системах.

Компонент Поддерживается Проверяется
Python CPython 3.12, 3.13, 3.14 каждая из них
PostgreSQL 14 и новее 14, 15, 16, 17 и 18, через rust_pg и через asyncpg, на Linux
PgBouncer 1.22.1 и новее 1.22, 1.23, 1.24, 1.25 и 1.26 перед PostgreSQL 18, 1.26 ещё и перед 14, через оба драйвера, на Linux
SQLite 3.35.5 и новее 3.35.5, 3.37.2, 3.38.0, 3.41.0 и 3.53.4, на Linux
ClickHouse 25.8 и новее 25.8, 25.10, 25.12, 26.3, 26.7, 26.8 и 26.9, сервер и кластер, через clickhouse-connect и clickhouse-driver, на Linux
Redis (outbox) 7.2 и новее 7.2 и 8.10, на Linux
RabbitMQ (outbox) 4.0 и новее 4.0 и 4.3, на Linux
Kafka (outbox) 3.9 и новее 3.9 и 4.3, на Linux

Вся матрица проверяется на каждом pull request в dev, каждую неделю и перед выпуском — каждая версия каждой строки хотя бы раз.

Сервер старше самой старой поддерживаемой версии отклоняется при открытии соединения. Возможность, которая появилась в более новой версии (MERGE в PostgreSQL с 15, таблицы STRICT в SQLite с 3.37, ...), включается по версии сервера, с которым работает подключение, — см. Версия сервера.

Нижние версии зависимостей, объявленные в pyproject.toml, тоже проверяются — на каждом Python.

Wheel-пакеты

Драйвер PostgreSQL на Rust, чтение и запись строк на Rust и скомпилированные функции SQLite (расширение rust.native) поставляются уже собранными — отдельный wheel на каждую версию Python (cp312, cp313 и cp314) для каждой платформы:

Платформа Архитектуры Тег wheel
Linux, glibc 2.17 и новее x86-64, ARM64 manylinux_2_17 (manylinux2014)
Linux, musl 1.2 и новее (Alpine) x86-64, ARM64 musllinux_1_2
macOS Intel (x86-64), Apple Silicon (ARM64) macosx
Windows x64, ARM64 win_amd64, win_arm64

На других платформах pip ставит универсальный wheel (py3-none-any) без расширения: там работают SQLite (с версиями её функций на Python) и postgresql+asyncpg://, а подключение postgresql:// даёт ConfigurationError. См. PostgreSQL: драйверы.