Типобезопасный SQL query builder для TypeScript с автодополнением таблиц, столбцов и типов результатов для разных SQL-баз данных.
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
Добавьте sqlx в Cargo.toml с функцией runtime (runtime-tokio или runtime-async-std) и при необходимости с функцией TLS
- 2
Включите нужный драйвер базы данных (postgres, mysql или sqlite) в списке features для sqlx
- 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 обновляется ежедневно.
Похожие проекты
Безопасный и расширяемый ORM и конструктор запросов для Rust с проверкой запросов во время компиляции для PostgreSQL, MySQL, SQLite и MariaDB.
Лёгкая ORM без лишних абстракций для TypeScript, поддерживающая PostgreSQL, MySQL и SQLite в Node.js, Bun, Deno и edge-средах.
ORM для Node.js и TypeScript на основе промисов, поддерживающая PostgreSQL, MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle и Db2.
Кроссплатформенный SQL-редактор и менеджер баз данных для Linux, macOS и Windows с поддержкой MySQL, PostgreSQL, SQLite, SQL Server и других СУБД.
SQL-компилятор, который читает ваши SQL-запросы и генерирует для них типобезопасный код на Go, Kotlin, Python и TypeScript.