zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

【TDengine】driver-go 连接器提供 database/sql 标准接口建立连接

DatabaseGoSQL连接 建立 提供 driver TDengine
2023-09-14 09:14:31 时间

目录

database/sql 标准接口


database/sql 标准接口

[TDengine] 提供了 GO 驱动程序 [taosSql][driver-go],实现了 GO 语言的内置数据库操作接口 database/sql/driver

TDengine Go 连接器提供 database/sql 标准接口,使用方法简单示例如下:

package main

import (
	"database/sql"
	"fmt"
	"time"

	_ "github.com/taosdata/driver-go/v3/taosSql"
)

func main() {
	var taosUri = "root:taosdata@tcp(服务端ip:6030)/"
	taos, err := sql.Open("taosSql", taosUri)
	if err != nil {
		fmt.Println("failed to connect TDengine, err:", err)
		return
	}
	defer taos.Close()
	taos.Exec("create database if not exists test")
	taos.Exec("use test")
	taos.Exec("create table if not exists tb1 (ts timestamp, a int)")
	_, err = taos.Exec("insert into tb1 values(now, 0)(now+1s,1)(now+2s,2)(now+3s,3)")
	if err != nil {
		fmt.Println("failed to insert, err:", err)
		return
	}
	rows, err := taos.Query("select * from tb1")
	if err != nil {
		fmt.Println("failed to select from table, err:", err)
		return
	}

	defer rows.Close()
	for rows.Next() {
		var r struct {
			ts time.Time
			a  int
		}
		err := rows.Scan(&r.ts, &r.a)
		if err != nil {
			fmt.Println("scan error:\n", err)
			return
		}
		fmt.Println(r.ts, r.a)
	}
}

 接口介绍

sql.Open(DRIVER_NAME string, dataSourceName string) *DB

该 API 用来创建database/sql DB 对象,类型为 *DB ,DRIVER_NAME 设置为字符串 taosSql, dataSourceName 设置为字符串user:password@tcp(host:port)/dbname,对应于 TDengine 的高可用机制,可以使用 user:password@cfg(/etc/taos)/dbname 来使用/etc/taos/taos.cfg中的多 EP 配置。

注意: 该 API 成功创建的时候,并没有做权限等检查,只有在真正执行 Query 或者 Exec 的时候才能真正的去创建连接,并同时检查 user/password/host/port 是不是合法。 另外,由于整个驱动程序大部分实现都下沉到 taosSql 所依赖的 libtaos 中。所以,sql.Open 本身特别轻量。

  • func (db *DB) Exec(query string, args ...interface{}) (Result, error)

    sql.Open 内置的方法,用来执行非查询相关 SQL,如createalter等。

  • func (db *DB) Query(query string, args ...interface{}) (*Rows, error)

    sql.Open 内置的方法,用来执行查询语句。

  • func (db *DB) Close() error

    sql.Open 内置的方法,关闭 DB 对象。