Open1
GoLang , Turso SDK 使用メモ

概要
- GoLang , Turso メモになります。
[ 公開 2025/09/23]
関連
環境
- go version go1.24.4
- Turso
- libsql
書いたコード
- .env
- turso-URL, token
- リモート接続
TURSO_DATABASE_URL=""
TURSO_AUTH_TOKEN=
- start
go mod init example.com/tursocli
go get github.com/joho/godotenv
go get github.com/tursodatabase/libsql-client-go/libsql
go mod tidy
go run .
- table
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
- data add , 数件追加
INSERT INTO users(name) VALUES('john-1');
INSERT INTO users(name) VALUES('john-2');
INSERT INTO users(name) VALUES('john-3');
INSERT INTO users(name) VALUES('john-4');
INSERT INTO users(name) VALUES('john-5');
- CRUD一部操作, INSERT UPDATE, DELETE SELECT
- server.go
func insertUser(db *sql.DB, name string) {
result, err := db.Exec("INSERT INTO users (name) VALUES (?)", name)
if err != nil {
log.Printf("failed to insert user: %v", err)
return
}
id, err := result.LastInsertId()
if err != nil {
log.Printf("failed to get last insert id: %v", err)
return
}
log.Printf("Inserted user %s with ID %d", name, id)
}
func listUsers(db *sql.DB) ([]User, error) {
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
return nil, err
}
defer rows.Close()
var users []User
for rows.Next() {
var u User
if err := rows.Scan(&u.ID, &u.Name); err != nil {
return nil, err
}
users = append(users, u)
}
if err := rows.Err(); err != nil {
return nil, err
}
return users, nil
}
func deleteUser(db *sql.DB, id int) error {
result, err := db.Exec("DELETE FROM users WHERE id = ?", id)
if err != nil {
return fmt.Errorf("failed to delete user: %w", err)
}
rows, err := result.RowsAffected()
if err != nil {
return fmt.Errorf("failed to get rows affected: %w", err)
}
if rows == 0 {
log.Printf("No user found with ID=%d", id)
} else {
log.Printf("Deleted user ID=%d", id)
}
return nil
}
func updateUser(db *sql.DB, id int, newName string) error {
result, err := db.Exec("UPDATE users SET name = ? WHERE id = ?", newName, id)
if err != nil {
return fmt.Errorf("failed to update user: %w", err)
}
rows, err := result.RowsAffected()
if err != nil {
return fmt.Errorf("failed to get rows affected: %w", err)
}
if rows == 0 {
log.Printf("No user found with ID=%d", id)
} else {
log.Printf("Updated user ID=%d, newName=%s", id, newName)
}
return nil
}