Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/glebarez/go-sqlite
pure-Go SQLite driver for Go (SQLite embedded)
https://github.com/glebarez/go-sqlite
database driver go golang sqlite sqlite3
Last synced: 3 months ago
JSON representation
pure-Go SQLite driver for Go (SQLite embedded)
- Host: GitHub
- URL: https://github.com/glebarez/go-sqlite
- Owner: glebarez
- License: bsd-3-clause
- Created: 2021-12-11T12:57:28.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-03-14T11:12:18.000Z (8 months ago)
- Last Synced: 2024-06-21T18:01:10.872Z (5 months ago)
- Topics: database, driver, go, golang, sqlite, sqlite3
- Language: Go
- Homepage:
- Size: 100 MB
- Stars: 575
- Watchers: 8
- Forks: 30
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
[![Tests](https://github.com/glebarez/go-sqlite/actions/workflows/tests.yml/badge.svg)](https://github.com/glebarez/go-sqlite/actions/workflows/tests.yml)
![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/glebarez/0fd7561eb29baf31d5362ffee1ae1702/raw/badge-sqlite-version-with-date.json)# go-sqlite
This is a pure-Go SQLite driver for Golang's native [database/sql](https://pkg.go.dev/database/sql) package.
The driver has [Go-based implementation of SQLite](https://gitlab.com/cznic/sqlite) embedded in itself (so, you don't need to install SQLite separately)# Usage
## Example
```go
package mainimport (
"database/sql"
"log"_ "github.com/glebarez/go-sqlite"
)func main() {
// connect
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
log.Fatal(err)
}// get SQLite version
_ := db.QueryRow("select sqlite_version()")
}
```## Connection string examples
- in-memory SQLite: ```":memory:"```
- on-disk SQLite: ```"path/to/some.db"```
- Foreign-key constraint activation: ```":memory:?_pragma=foreign_keys(1)"```## Settings PRAGMAs in connection string
Any SQLIte pragma can be preset for a Database connection using ```_pragma``` query parameter. Examples:
- [journal mode](https://www.sqlite.org/pragma.html#pragma_journal_mode): ```path/to/some.db?_pragma=journal_mode(WAL)```
- [busy timeout](https://www.sqlite.org/pragma.html#pragma_busy_timeout): ```:memory:?_pragma=busy_timeout(5000)```Multiple PRAGMAs can be specified, e.g.:
```path/to/some.db?_pragma=busy_timeout(5000)&_pragma=journal_mode(WAL)```