Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zombiezen/go-sqlite
Low-level Go interface to SQLite 3
https://github.com/zombiezen/go-sqlite
database golang golang-library golang-package sqlite sqlite3
Last synced: 6 days ago
JSON representation
Low-level Go interface to SQLite 3
- Host: GitHub
- URL: https://github.com/zombiezen/go-sqlite
- Owner: zombiezen
- License: isc
- Created: 2021-03-28T02:42:52.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-23T18:23:18.000Z (3 months ago)
- Last Synced: 2024-11-29T07:03:04.251Z (13 days ago)
- Topics: database, golang, golang-library, golang-package, sqlite, sqlite3
- Language: Go
- Homepage: https://pkg.go.dev/zombiezen.com/go/sqlite
- Size: 6.38 MB
- Stars: 773
- Watchers: 7
- Forks: 19
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-hacking-lists - zombiezen/go-sqlite - Low-level Go interface to SQLite 3 (Go)
README
# `zombiezen.com/go/sqlite`
[![Go Reference](https://pkg.go.dev/badge/zombiezen.com/go/sqlite.svg)][reference docs]
This package provides a low-level Go interface to [SQLite 3][].
It is a fork of [`crawshaw.io/sqlite`][] that uses [`modernc.org/sqlite`][],
a CGo-free SQLite package.
It aims to be a mostly drop-in replacement for `crawshaw.io/sqlite`.This package deliberately does not provide a `database/sql` driver.
See [David Crawshaw's rationale][] for an in-depth explanation.
If you want to use `database/sql` with SQLite without CGo,
use `modernc.org/sqlite` directly.[`crawshaw.io/sqlite`]: https://github.com/crawshaw/sqlite
[David Crawshaw's rationale]: https://crawshaw.io/blog/go-and-sqlite
[`modernc.org/sqlite`]: https://pkg.go.dev/modernc.org/sqlite
[reference docs]: https://pkg.go.dev/zombiezen.com/go/sqlite
[SQLite 3]: https://sqlite.org/## Features
- Full SQLite functionality via `modernc.org/sqlite`,
an automatically generated translation of the original C source code of SQLite into Go
- Builds with `CGO_ENABLED=0`,
allowing cross-compiling and data race detection
- Allows access to SQLite-specific features
like [blob I/O][] and [user-defined functions][]
- Includes a simple [schema migration package][]
- Utilities for [running embedded SQL scripts][ExecScriptFS] using the
[Go 1.16 embedding feature][]
- A [`go fix`-like tool][migration docs] for migrating existing code using
`crawshaw.io/sqlite`
- A [simple REPL][] for debugging[blob I/O]: https://pkg.go.dev/zombiezen.com/go/sqlite#Blob
[ExecScriptFS]: https://pkg.go.dev/zombiezen.com/go/sqlite/sqlitex#ExecScriptFS
[Go 1.16 embedding feature]: https://pkg.go.dev/embed
[migration docs]: cmd/zombiezen-sqlite-migrate/README.md
[schema migration package]: https://pkg.go.dev/zombiezen.com/go/sqlite/sqlitemigration
[simple REPL]: https://pkg.go.dev/zombiezen.com/go/sqlite/shell
[user-defined functions]: https://pkg.go.dev/zombiezen.com/go/sqlite#Conn.CreateFunction## Install
```shell
go get zombiezen.com/go/sqlite
```While this library does not use CGo,
make sure that you are building for one of the [supported architectures][].[supported architectures]: https://pkg.go.dev/modernc.org/sqlite#hdr-Supported_platforms_and_architectures
## Getting Started
```go
import (
"fmt""zombiezen.com/go/sqlite"
"zombiezen.com/go/sqlite/sqlitex"
)// ...
// Open an in-memory database.
conn, err := sqlite.OpenConn(":memory:", sqlite.OpenReadWrite)
if err != nil {
return err
}
defer conn.Close()// Execute a query.
err = sqlitex.ExecuteTransient(conn, "SELECT 'hello, world';", &sqlitex.ExecOptions{
ResultFunc: func(stmt *sqlite.Stmt) error {
fmt.Println(stmt.ColumnText(0))
return nil
},
})
if err != nil {
return err
}
```If you're creating a new application,
see the [package examples][] or the [reference docs][].If you're looking to switch existing code that uses `crawshaw.io/sqlite`,
take a look at the [migration docs][].[package examples]: https://pkg.go.dev/zombiezen.com/go/sqlite#pkg-examples
## License
[ISC](LICENSE)