db package provides a wrapper around sqlx for database connection management, connection pooling, and database migrations using golang-migrate.
Features
- Connection Pooling: Configurable connection pool settings
- Query Timeouts: Built-in timeout management for queries
- Transaction Support: Safe transaction handling with automatic rollback
- Migrations: Embedded migration support using golang-migrate
- Multiple Drivers: Support for PostgreSQL, MySQL, and more
Installation
Quick Start
Configuration
Config
Client
Creating a Client
Client Methods
WithTimeout
WithTxn
ConnectionURL
Host
Close
Queries
The client embeds*sqlx.DB, so all sqlx methods are available:
Get (Single Row)
Select (Multiple Rows)
Exec (Insert/Update/Delete)
Named Queries
Transactions
Simple Transaction
Transaction with Isolation Level
Migrations
RunMigrations
RunRollback
Complete Example
Best Practices
Use Connection Pooling
Use Connection Pooling
Configure connection pool based on your workload:
Always Use Transactions for Multi-Step Operations
Always Use Transactions for Multi-Step Operations
Wrap related operations in transactions:
Use Context for Timeouts
Use Context for Timeouts
Pass context through all database operations:
Handle Connection Errors Gracefully
Handle Connection Errors Gracefully
Always check for connection errors and retry if appropriate: