A SQLite3 driver for Go that conforms to the built-in database/sql interface.
go-sqlite3 is a database driver written in Go that allows applications to connect to and manipulate SQLite databases using the standard `database/sql` interface. It solves the problem of integrating SQLite, a lightweight, serverless SQL database engine, into Go programs by providing a native, performant binding that supports SQLite's full feature set.
Go developers who need to embed a lightweight, file-based SQL database in their applications, such as for desktop tools, mobile backends, or local caching layers.
Developers choose go-sqlite3 because it is the most widely used and mature SQLite driver for Go, offering full compatibility with the `database/sql` package, extensive configuration options, and support for SQLite extensions, all while maintaining high performance and reliability.
sqlite3 driver for go using database/sql
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements Go's database/sql interface, ensuring seamless integration with existing Go database patterns and libraries, as highlighted in the description.
Supports numerous SQLite PRAGMAs and extensions via connection string options and build tags, such as journal modes, FTS5, and ICU, detailed in the features list.
Provides comprehensive compilation guides for Linux, macOS, Windows, and Android, including cross-compilation, as evidenced in the Compilation section.
Offers a rich Data Source Name system to configure database behavior, including in-memory databases and performance settings, with examples in the Connection String table.
Requires a C compiler (gcc) and CGO_ENABLED=1, complicating deployment and cross-compilation compared to pure Go alternatives, as emphasized in the Installation notes.
The FAQ warns that concurrent write operations can cause 'database is locked' errors, recommending workarounds like cache=shared and setting max open connections to 1.
Some features, such as User Authentication, are marked as deprecated, and enabling extensions requires managing build tags and understanding SQLite internals, adding maintenance overhead.