4个版本

0.0.4 2020年6月1日
0.0.3 2020年6月1日
0.0.2 2020年6月1日
0.0.1 2020年6月1日

#12 in #tls-connection

Apache-2.0

155KB
3K SLoC

Rust版本的Siodb驱动程序

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

特性

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

安装

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

[dependencies]
siodb = "*"

快速设置

在一个容器中启动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@localhost:50000?identity_file=/home/siodb/.ssh/id_rsa

对于Unix套接字连接

siodbu:/run/siodb/siodb.socket?identity_file=/home/siodb/.ssh/id_rsa

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

选项

  • identity_file: RSA私钥的路径。
  • trace: 将驱动程序中的所有内容跟踪到sdtout。

支持Siodb

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

文档

我们使用Markdown编写Siodb文档,它可在docs/users/docs文件夹中找到。如果您更喜欢更用户友好的格式,相同的文档也可在线这里找到。

贡献

请参阅贡献文件

支持

  • 通过这里报告Siodb的问题。
  • 通过这里报告驱动程序的问题。
  • 提问这里
  • Siodb Slack空间这里

关注Siodb

许可证

根据Apache许可证版本2.0授权。

依赖项

~8–18MB
~286K SLoC