A batteries-included, multi-dialect SQL query builder for Node.js that is flexible, portable, and fun to use.
Knex.js is a SQL query builder for Node.js that provides a fluent, chainable interface for constructing SQL queries across multiple database systems. It solves the problem of writing raw SQL strings by offering a programmatic API that maintains database portability while preventing SQL injection vulnerabilities.
Node.js developers working with relational databases who need a lightweight, flexible query builder that supports multiple database dialects without the overhead of a full ORM.
Developers choose Knex.js for its excellent database portability, comprehensive feature set including transactions and connection pooling, and its balance between raw SQL control and abstraction convenience.
A query builder for PostgreSQL, MySQL, CockroachDB, SQL Server, SQLite3 and Oracle, designed to be flexible, portable, and fun to use.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Works with PostgreSQL, MySQL, SQLite3, Oracle, and others, enabling database-agnostic code without vendor lock-in, as highlighted in the multi-dialect feature list.
Provides ACID-compliant transaction support out of the box, ensuring data integrity for complex operations, documented in the transactions guide.
Includes efficient connection management to improve performance in high-concurrency applications, as mentioned in the connection pooling section.
Offers stream-based results for handling large datasets without memory overload, detailed in the streaming interfaces documentation.
Requires Python with setuptools and on Windows, Visual Studio Build Tools for native dependencies, adding overhead for quick development starts.
Lacks built-in features for relationships, eager loading, or model definitions, necessitating additional libraries or manual SQL for complex data modeling.
Supports callback-based interfaces alongside promises, which can lead to inconsistent code patterns and increased complexity in modern async/await projects.