Tous les produits
Search
Centre de documentation

Tablestore:Interroger des données avec le pilote Go

Dernière mise à jour :Aug 18, 2026

Le pilote Go (aliyun-tablestore-go-sql-driver) implémente l'interface database/sql/driver et vous permet d'accéder aux données Tablestore via le package standard database/sql.

Prérequis

  • Une paire de clés AccessKey disposant de l'autorisation ots:SQL* (obligatoire pour les utilisateurs RAM).

  • Une table de données et une table de mappage. Pour plus d'informations, consultez la rubrique Opérations DDL.

Procédure

Étape 1 : Installer le pilote Go

Exécutez la commande suivante pour installer le pilote Go :

go get github.com/aliyun/aliyun-tablestore-go-sql-driver

Étape 2 : Se connecter avec le pilote Go

Paramètres

Pour accéder à Tablestore avec le pilote Go, spécifiez le nom du pilote et un nom de source de données (DSN).

Paramètre

Description

driverName

Nom du pilote Go Tablestore. Définissez cette valeur sur ots.

dataSourceName

Le DSN, au format schema://accessKeyId:accessKeySecret@endpoint/instanceName[?param1=value1&...&paramN=valueN]. Champs principaux :

  • schema (obligatoire) : Le protocole. Généralement https.

  • accessKeyId:accessKeySecret (obligatoire) : L'ID de clé AccessKey et la clé secrète AccessKey de votre compte Alibaba Cloud ou utilisateur RAM.

  • endpoint (obligatoire) : Le endpoint de votre instance Tablestore.

  • instanceName (obligatoire) : Le nom de votre instance Tablestore.

Pour les autres options de configuration, consultez la section Options de configuration.

Exemple

import (
    "database/sql"
    _ "github.com/aliyun/aliyun-tablestore-go-sql-driver"
)

// Set the Go driver name and the Tablestore data source name.
db, err := sql.Open("ots", "https://access_key_id:access_key_secret@endpoint/instance_name")
if err != nil {
    panic(err)    // Handle the error.
}

Étape 3 : Interroger des données

Exécutez des requêtes avec la méthode Query ou utilisez des instructions préparées avec la méthode Prepare.

Remarque

Les types de variables doivent correspondre aux types de données Tablestore. Pour le mappage des types, consultez la section Mappage des types de données.

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)
}

Exemple complet

L'exemple suivant se connecte à une instance Tablestore et interroge toutes les données de la table 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...)
    }
}

Options de configuration

Configurez le pilote Go en ajoutant des paramètres de requête au DSN.

https://ak:sk@endpoint/instance?retryTimes=3&requestTimeout=10s

Les options temporelles utilisent le format de durée Go, par exemple 15s et 500ms.

Option

Valeur par défaut

Description

retryTimes

10

Nombre maximal de tentatives. Entier.

connectionTimeout

15s

Délai d'expiration de la connexion. La valeur 0 signifie qu'il n'y a pas de délai d'expiration.

requestTimeout

30s

Délai d'expiration de la requête.

maxRetryTime

5s

Intervalle maximal entre les tentatives.

maxIdleConnections

2000

Nombre maximal de connexions inactives. Entier.

Mappage des types de données

Les types de données Tablestore correspondent à des types Go. Toute incompatibilité de type génère une erreur.

Type de données Tablestore

Type de données Go

Integer

int64

Binary

[]byte

String

string

Double

float64

Boolean

bool