7 个版本

0.6.5 2020 年 6 月 1 日
0.6.4 2020 年 5 月 25 日
0.0.1 2020 年 6 月 1 日

#2322数据库接口

Apache-2.0

155KB
3K SLoC

Rust 对 Siodb 的驱动程序

用纯 Rust 编写的简单 Siodb 驱动程序。

功能

  • 支持 URI
  • 连接到 Siodb(TLS、TCP、Unix 套接字)
  • 认证 Siodb
  • 查询执行
  • DML 执行

安装

将所需版本的 crate 依赖项添加到 Cargo.toml

[dependencies]
siodb_driver = "*"

快速设置

在一个容器中启动 Siodb 并获取本地 root 用户的 RSA 密钥

docker run -p 127.0.0.1:50000:50000/tcp --name siodb siodb/siodb
docker exec -it siodb cat /home/siodb/.ssh/id_rsa > ~/root_id_rsa

示例

    let uri = "siodbs://root@localhost:50000?identity_file=/home/nico/root_id_rsa";

    let mut siodb_conn = SiodbConn::new(&uri).expect(&format!("Error connecting to URI '{}'", uri));

    if siodb_conn
        .query_row("select name from sys_databases where name = 'TEST_DB'".to_string())
        .is_none()
    {
        siodb_conn
            .execute("CREATE DATABASE test_db".to_string())
            .expect(&format!("Database creation error."));
    }

    if siodb_conn
        .query_row("select name from test_db.sys_tables where name = 'TEST_TABLE'".to_string())
        .is_none()
    {
        siodb_conn
            .execute(
                "CREATE TABLE test_db.test_table
                (
                   ctinyintmin  TINYINT,
                   ctinyintmax  TINYINT,
                   ctinyuint    TINYUINT,
                   csmallintmin SMALLINT,
                   csmallintmax SMALLINT,
                   csmalluint   SMALLUINT,
                   cintmin      INT,
                   cintmax      INT,
                   cuint        UINT,
                   cbigintmin   BIGINT,
                   cbigintmax   BIGINT,
                   cbiguint     BIGUINT,
                   cfloatmin    FLOAT,
                   cfloatmax    FLOAT,
                   cdoublemin   DOUBLE,
                   cdoublemax   DOUBLE,
                   ctext        TEXT,
                   cts          TIMESTAMP
                )"
                .to_string(),
            )
            .expect(&format!("Table creation error."));
    }

    siodb_conn
        .execute(
            "INSERT INTO test_db.test_table
             VALUES      ( -128,
                           127,
                           255,
                           -32768,
                           32767,
                           65535,
                           -2147483648,
                           2147483647,
                           4294967295,
                           -9223372036854775808,
                           9223372036854775807,
                           18446744073709551615,
                           222.222,
                           222.222,
                           222.222,
                           222.222,
                           '汉字',
                           CURRENT_TIMESTAMP ) "
                .to_string(),
        )
        .expect(&format!("Insertion error."));

    println!("Affected row(s): {}", siodb_conn.get_affected_row_count());

    siodb_conn
        .query("select * from test_db.test_table".to_string())
        .expect(&format!("Query error"));

    while siodb_conn.next().unwrap() {
        for data in siodb_conn.scan() {
            if data.is_none() {
                println!("Value: Null");
            } else {
                println!("Value: {}", data.as_ref().unwrap());
            }
        }
    }

    println!("Row(s): {}", siodb_conn.get_row_count());

    siodb_conn.close().unwrap();

URI

为了识别 Siodb 资源,驱动程序使用 URI 格式

对于 TLS 连接(默认)

siodbs://root@localhost:50000?identity_file=/home/siodb/.ssh/id_rsa

对于 TCP 明文连接

siodb://root@unix_socket?identity_file=/home/siodb/.ssh/id_rsa

对于 Unix 套接字连接

siodbu://root@unix_socket?identity_file=/home/siodb/.ssh/id_rsa

上面的示例将您连接到本地主机,端口号为 50000。驱动程序将使用 Siodb 用户 root 和身份文件 /home/siodb/.ssh/id_rsa 进行认证。

选项

  • identity_file: RSA 私钥的路径。
  • unix_socket: 指明 Siodb 用于本地连接的 Unix 套接字路径。
  • trace: 将驱动程序中的所有内容跟踪到 sdtout。

支持 Siodb

你喜欢这个项目吗?通过点击页面右上角的星号 🟊 来告诉我们 ☝☝

文档

我们用 Markdown 编写 Siodb 文档,它可在 docs/users/docs 文件夹中找到。如果您更喜欢更友好的格式,相同的文档可在网上 此处 找到。

贡献

请参阅 贡献文件

支持

  • 在此 报告您与 Siodb 相关的问题。
  • 在此 报告您与驱动程序相关的问题。
  • 提问 👉 此处.
  • Siodb Slack 空间 👉 此处.

关注 Siodb

许可协议

根据 Apache 许可协议版本 2.0 许可。

依赖项

~8–19MB
~286K SLoC