News for hackers. Stuff that matters.

Show HN: I created a library for correctly using SQLite in Go programs

https://github.com/cattlecloud/litesql

Using SQLite in Go is deceptively easy. If you just import the popular github.com/mattn/go-sqlite3 as the database/sql driver implementation and start making queries, things will work great until you start hitting SQLITE_BUSY errors as traffic increases.

Then you go down the same path of many gophers before you, finding GitHub and forum posts providing conflicting information on best practices for pragma values and connection handling.

So I created https://github.com/cattlecloud/litesql

Which provides a nice abstraction, making it easy to accidentally do the right things when using SQLite in your Go program. In particular it pools connections for read transactions and isolates a dedicated write connection for writes. It also sets pragma values to much more reasonable defaults, like isolation levels, foreign keys, cache sizes, etc. On top it provides a nice abstraction for creating periodic snapshots with retention policies. There is also litesqltest for one-line test database creation in unit tests.

Hopefully you or your agents might find it useful.

( no comments | on HN )

There are no comments yet.