All checks were successful
Build / build (push) Successful in 41s
MySQLite
A Go library that provides a convenient wrapper around SQLite with additional functionality for database management, migrations, and transactions.
Features
- Simple and intuitive SQLite database connection management
- Thread-safe database operations with built-in locking mechanism
- Support for database migrations
- Transaction management
- Built on top of zombiezen.com/go/sqlite
Installation
go get gitea.seeseepuff.be/seeseemelk/mysqlite
Usage
Opening a Database Connection
import "gitea.seeseepuff.be/seeseemelk/mysqlite"
// Open an in-memory database
db, err := mysqlite.OpenDb(":memory:")
if err != nil {
// Handle error
}
defer db.Close()
// Open a file-based database
db, err := mysqlite.OpenDb("path/to/database.db")
if err != nil {
// Handle error
}
defer db.Close()
Executing Queries
The library provides methods for executing SQL queries and managing transactions:
// Execute a simple query
err := db.Query("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)").Exec()
// Use transactions
tx, err := db.BeginTransaction()
if err != nil {
// Handle error
}
// Perform operations within transaction
// ...
// Commit or rollback
err = tx.Commit() // or tx.Rollback()
Database Migrations
The library includes support for SQL-based migrations. Migrations are SQL files stored in a directory and are executed in order based on their filename prefix:
- Create a directory for your migrations (e.g.,
migrations/
) - Add numbered SQL migration files:
migrations/ ├── 1_initial.sql ├── 2_add_users.sql ├── 3_add_posts.sql
- Embed the migrations in your Go code:
import "embed" //go:embed migrations/*.sql var migrations embed.FS // Apply migrations err := db.MigrateDb(migrations, "migrations") if err != nil { // Handle error }
Each migration file should contain valid SQL statements. The migrations are executed in order and are tracked internally to ensure they only run once.
Requirements
- Go 1.24 or higher
Description
v0.11.1
Latest
Languages
Go
100%