package mainimport ( "database/sql" "fmt" "os" _ "github.com/tursodatabase/go-libsql")func main() { dbName := "file:./local.db" db, err := sql.Open("libsql", dbName) if err != nil { fmt.Fprintf(os.Stderr, "failed to open db %s", err) os.Exit(1) } defer db.Close()}
Remote only
Copy
package mainimport ( "database/sql" "fmt" "os" _ "github.com/tursodatabase/libsql-client-go/libsql")func main() { url := "libsql://[DATABASE].turso.io?authToken=[TOKEN]" db, err := sql.Open("libsql", url) if err != nil { fmt.Fprintf(os.Stderr, "failed to open db %s: %s", url, err) os.Exit(1) } defer db.Close()}
4
Execute
You can execute a SQL query against your existing database. Create a function to query your database that accepts the pointer to sql.DB as an argument:
Copy
type User struct { ID int Name string}func queryUsers(db *sql.DB) { rows, err := db.Query("SELECT * FROM users") if err != nil { fmt.Fprintf(os.Stderr, "failed to execute query: %v\n", err) os.Exit(1) } defer rows.Close() var users []User for rows.Next() { var user User if err := rows.Scan(&user.ID, &user.Name); err != nil { fmt.Println("Error scanning row:", err) return } users = append(users, user) fmt.Println(user.ID, user.Name) } if err := rows.Err(); err != nil { fmt.Println("Error during rows iteration:", err) }}
Now inside func main() call queryUsers and pass in the pointer to sql.DB:
Copy
queryUsers(db)
5
Sync (Embedded Replicas only)
When using embedded replicas you should call Sync() on the connector to sync your local database with the primary database.