Driver Go (aliyun-tablestore-go-sql-driver) mengimplementasikan antarmuka database/sql/driver, sehingga memungkinkan Anda mengakses data Tablestore melalui paket standar database/sql.
Prasyarat
Pasangan Kunci Akses dengan izin
ots:SQL*(wajib untuk pengguna RAM).Sebuah tabel data dan tabel pemetaan. Untuk informasi selengkapnya, lihat Operasi DDL.
Prosedur
Langkah 1: Instal driver Go
Jalankan perintah berikut untuk menginstal driver Go:
go get github.com/aliyun/aliyun-tablestore-go-sql-driverLangkah 2: Hubungkan dengan driver Go
Parameter
Untuk mengakses Tablestore menggunakan driver Go, tentukan nama driver dan Data Source Name (DSN).
Parameter | Deskripsi |
driverName | Nama driver Go Tablestore. Tetapkan nilai ini ke |
dataSourceName | DSN, dalam format
Untuk opsi konfigurasi lainnya, lihat Opsi konfigurasi. |
Contoh
import (
"database/sql"
_ "github.com/aliyun/aliyun-tablestore-go-sql-driver"
)
// Tetapkan nama driver Go dan nama sumber data Tablestore.
db, err := sql.Open("ots", "https://access_key_id:access_key_secret@endpoint/instance_name")
if err != nil {
panic(err) // Tangani error.
}Langkah 3: Kueri data
Lakukan kueri menggunakan metode Query atau gunakan prepared statement dengan metode Prepare.
Tipe variabel harus sesuai dengan tipe data Tablestore. Untuk pemetaan tipe, lihat Pemetaan tipe data.
Query
rows, err := db.Query("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?", 3)
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var pk1 int64
var col1 float64
var col2 string
if err := rows.Scan(&pk1, &col1, &col2); err != nil {
panic(err)
}
fmt.Println(pk1, col1, col2)
}Prepare
stmt, err := db.Prepare("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?")
if err != nil {
panic(err)
}
defer stmt.Close()
rows, err := stmt.Query(3)
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var pk1 int64
var col1 float64
var col2 string
if err := rows.Scan(&pk1, &col1, &col2); err != nil {
panic(err)
}
fmt.Println(pk1, col1, col2)
}Contoh lengkap
Contoh berikut menghubungkan ke instans Tablestore dan melakukan kueri terhadap semua data dari test_table:
package main
import (
"database/sql"
"fmt"
_ "github.com/aliyun/aliyun-tablestore-go-sql-driver"
)
func main() {
db, err := sql.Open("ots", "https://************************:********************************@myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance")
if err != nil {
panic(err)
}
defer db.Close()
rows, err := db.Query("SELECT * FROM test_table")
if err != nil {
panic(err)
}
defer rows.Close()
columns, _ := rows.Columns()
for rows.Next() {
values := make([]interface{}, len(columns))
pointers := make([]interface{}, len(columns))
for i := range values {
pointers[i] = &values[i]
}
if err := rows.Scan(pointers...); err != nil {
panic(err)
}
fmt.Println(values...)
}
}Opsi konfigurasi
Konfigurasikan driver Go dengan menambahkan parameter kueri ke DSN.
https://ak:sk@endpoint/instance?retryTimes=3&requestTimeout=10sOpsi berbasis waktu menggunakan format durasi Go, seperti 15s dan 500ms.
Opsi | Bawaan | Deskripsi |
| 10 | Jumlah maksimum percobaan ulang. Bilangan bulat. |
| 15s | Timeout koneksi. |
| 30s | Timeout permintaan. |
| 5s | Interval maksimum antara percobaan ulang. |
| 2000 | Jumlah maksimum koneksi idle. Bilangan bulat. |
Pemetaan tipe data
Tipe data Tablestore dipetakan ke tipe data Go. Ketidaksesuaian tipe akan menyebabkan error.
Tipe data Tablestore | Tipe data Go |
Integer | int64 |
Binary | []byte |
String | string |
Double | float64 |
Boolean | bool |