Repolode
transact-rs

transact-rs/sqlx

Асинхронный SQL-инструментарий на чистом Rust с запросами на обычном SQL, проверяемыми во время компиляции; поддерживает PostgreSQL, MySQL/MariaDB и SQLite.

Звёзды
17,587
Форки
1,750
Открытые issues
785
Последний коммит
4 часа назад

Что это?

SQLx — это crate для Rust, позволяющий асинхронно работать с SQL-базами данных. Вместо query builder или DSL вы пишете обычные SQL-строки, а макросы запросов проверяют их во время компиляции, обращаясь к базе данных для разработки. Так ошибки синтаксиса и типов обнаруживаются до запуска программы. SQLx принципиально не является ORM: строки можно преобразовывать в структуры с помощью derive-макросов или `query_as`.

В crate есть пул соединений, потоковая обработка строк, кеширование подготовленных выражений, транзакции с точками сохранения и поддержка LISTEN/NOTIFY в PostgreSQL. Драйверы Postgres и MySQL/MariaDB написаны на чистом Rust без unsafe-кода, а драйвер SQLite использует C-библиотеку SQLite. SQLx работает с рантаймами tokio и async-std, а для TLS поддерживает native-tls и rustls.

Драйвер `Any` позволяет приложению выбирать бэкенд базы данных во время выполнения по схеме URL подключения.

Ключевые возможности

  • 01Проверка SQL-запросов во время компиляции с помощью макросов query — без DSL для построения запросов.
  • 02Асинхронный API со встроенным пулом соединений и потоковой обработкой строк.
  • 03Поддержка PostgreSQL, MySQL/MariaDB и SQLite.
  • 04Автоматическое кеширование подготовленных выражений для каждого соединения.
  • 05Вложенные транзакции с точками сохранения.
  • 06Поддержка LISTEN/NOTIFY в PostgreSQL.
  • 07Работа с tokio или async-std, а также с native-tls или rustls.

Сценарии использования

  • Разработка асинхронных веб-сервисов на Rust с PostgreSQL или MySQL.
  • Написание оптимизированного вручную SQL с проверкой соответствия схеме на этапе сборки.
  • Встраивание SQLite в приложение на Rust с асинхронным доступом.
  • Создание не привязанных к конкретной базе данных инструментов, которые выбирают драйвер во время выполнения по URL.

Быстрый старт

  1. 1

    Добавьте sqlx в Cargo.toml с функцией runtime (runtime-tokio или runtime-async-std) и при необходимости с функцией TLS

  2. 2

    Включите нужный драйвер базы данных (postgres, mysql или sqlite) в списке features для sqlx

  3. 3

    Создайте пул соединений с помощью PgPoolOptions (или соответствующего типа пула) и выполните запрос, как показано в Quickstart

Что важно знать

  • Драйвер SQLite зависит от библиотеки C libsqlite3 и использует unsafe-код, поэтому это не чистая реализация на Rust.
  • Для макросов запросов с проверкой во время компиляции нужна доступная при сборке база данных для разработки, если не используется автономный режим.
  • Драйвер MSSQL был удалён после версии 0.7 и в настоящее время не поддерживается.

Темы

Частые вопросы

Что такое sqlx?
Асинхронный SQL-инструментарий на чистом Rust с запросами на обычном SQL, проверяемыми во время компиляции; поддерживает PostgreSQL, MySQL/MariaDB и SQLite. SQLx — это crate для Rust, позволяющий асинхронно работать с SQL-базами данных. Вместо query builder или DSL вы пишете обычные SQL-строки, а макросы запросов проверяют их во время компиляции, обращаясь к базе данных для разработки. Так ошибки синтаксиса и типов обнаруживаются до запуска программы. SQLx принципиально не является ORM: строки можно преобразовывать в структуры с помощью derive-макросов или `query_as`.
sqlx можно использовать бесплатно? Какая у него лицензия?
sqlx распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
sqlx всё ещё поддерживается?
Активно поддерживается. Последний коммит в sqlx — 21 окт. 2026 г..
Для чего можно использовать sqlx?
Разработка асинхронных веб-сервисов на Rust с PostgreSQL или MySQL. Написание оптимизированного вручную SQL с проверкой соответствия схеме на этапе сборки. Встраивание SQLite в приложение на Rust с асинхронным доступом. Создание не привязанных к конкретной базе данных инструментов, которые выбирают драйвер во время выполнения по URL.
Как установить sqlx?
Добавьте sqlx в Cargo.toml с функцией runtime (runtime-tokio или runtime-async-std) и при необходимости с функцией TLS Включите нужный драйвер базы данных (postgres, mysql или sqlite) в списке features для sqlx Создайте пул соединений с помощью PgPoolOptions (или соответствующего типа пула) и выполните запрос, как показано в Quickstart
Где скачать sqlx?
Исходный код и инструкции по установке — на GitHub: https://github.com/transact-rs/sqlx

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты