TDengine/docs/zh/05-programming/06-client-libraries/04-rust.md
2025-12-04 18:25:02 +08:00

4.2 KiB
Raw Permalink Blame History

toc_max_heading_level sidebar_position sidebar_label title
4 5 Rust TDengine Rust Connector

Crates.io Crates.io docs.rs

taos 是 TDengine 的官方 Rust 语言连接器。Rust 开发人员可以通过它开发存取 TDengine 数据库的应用软件。

该 Rust 连接器的源码托管在 GitHub

版本支持

请参考版本历史及支持列表

连接方式

taos 提供原生连接WebSocket 连接两种方式,我们使用 WebSocket 连接方式访问 TDengine Cloud 实例。 它通过 taosAdapter 的 WebSocket 接口连接实例

关于如何建立连接的详细介绍请参考:开发指南 - 建立连接-Rust

安装

安装前准备

安装 Rust 开发工具链

添加 taos 依赖

taos 连接器使用 WebSocket 方式连接 TDengine Cloud 实例。需要在 Rust 项目中添加 taos 依赖,并启用wsws-rustls特性。

Cargo.toml 文件中添加 taos 并启用特性,以下两种方式都可以:

  • 启用默认特性

    [dependencies]
    taos = { version = "*"}
    
  • 禁用默认特性,并启用 ws 和 ws-rustls 特性

    [dependencies]
    taos = { version = "*", default-features = false, features = ["ws", "ws-rustls"] }
    

使用示例

:::note IMPORTANT 在执行下面样例代码的之前,您必须先在 TDengine Cloud - 数据浏览器 页面创建一个名为 power 的数据库 :::

建立连接

TaosBuilder 通过 DSN 连接描述字符串创建一个连接构造器。DSN 由下面的格式组成wss://<host>?token=<token>

let builder = TaosBuilder::from_dsn(DSN)?;

现在您可以使用该对象创建连接:

let conn = builder.build()?;

连接对象可以创建多个:

let conn1 = builder.build()?;
let conn2 = builder.build()?;

插入数据

exec 方法执行某个非查询类 SQL 语句,例如 CREATEALTERINSERT 等。

{{#include docs/examples/rust/cloud-example/examples/tutorial.rs:insert}}

exec_many 方法同时(顺序)执行多个 SQL 语句。

{{#include docs/examples/rust/cloud-example/examples/tutorial.rs:exec_many}}

查询数据

query 方法执行查询语句,返回 ResultSet 对象。

在这个例子里面,我们使用查询方法来执行 SQL然后获取到 ResultSet 对象。

{{#include docs/examples/rust/cloud-example/examples/query.rs:query:nrc}}

获取列的元数据。

ResultSet 对象存储了查询结果数据和返回的列的基本信息(列名,类型,长度,列信息使用 [.fields()] 方法获取:

{{#include docs/examples/rust/cloud-example/examples/query.rs:meta:nrc}}

获取前 5 行数据并输出每一行数据:

{{#include docs/examples/rust/cloud-example/examples/query.rs:iter}}

逐行逐列获取数据

{{#include docs/examples/rust/cloud-example/examples/query.rs:iter_column}}

使用 serde 序列化框架

{{#include docs/examples/rust/cloud-example/examples/serde.rs}}

连接池

在复杂应用中,建议启用连接池。taos 的连接池使用 r2d2 实现。

如下,可以生成一个默认参数的连接池。

let pool = TaosBuilder::from_dsn(dsn)?.pool()?;

在应用代码中,使用 pool.get()? 来获取一个连接对象 taos

let taos = pool.get()?;

API 参考