5 个版本 (3 个稳定版本)

1.2.0 2020 年 2 月 22 日
1.1.0 2017 年 6 月 23 日
1.0.0 2016 年 4 月 15 日
0.1.1 2016 年 4 月 12 日
0.1.0 2016 年 4 月 11 日

#1716数据库接口

每月 23 次下载

MPL-2.0 许可证

57KB
897

Quandl v3 API 的 Rust 绑定。

该库的目的是提供一个文档齐全、功能完善且易于使用的接口,以访问 Quandl 的 RESTful API。

License: MPL 2.0 Travis Build Status Documentation

该库广泛使用了 rustc_serialize 库,因此也受到了其一些限制。具体来说

  • 在查询数据集的元数据时,可能会缺少字段 type。这是因为 type 在 Rust 中是一个关键字。使用此库假定您了解查询数据的布局,因此该字段并非非常重要。

  • 大多数公共枚举的变体名称不符合驼峰命名法,以符合 API 的命名约定。反序列化器需要名称匹配才能正常工作,因此您会看到 Order::asc 而不是更易读的 Order::Ascending

该库的其他设计选择包括

  • 不检查创建的查询的运行时检查。这个库尽可能让创建无效查询变得困难。然而,Quandl API 会直接检查查询。从积极的角度来看,我们转发了 Quandl 的错误消息/代码,而没有删除任何信息;它们的错误报告非常好。

  • 包含一个 batch_query 函数,允许用户同时提交多个查询。该函数返回一个迭代器,可以提供多线程下载和异步操作的优势,这对于数据挖掘至关重要。

  • 我们使用 JSON Quandl API 来处理所有操作,除了数据查询。对于数据查询,我们使用 API 的 CSV 子集,因为它更快,并且允许使用 rust-csv 库来定义自己的结构来接收数据。

愿望清单 / TODO

  • 添加对状态化 API 键的支持,这些键会记住它们的使用次数,有自己的限制,并且可以在使用之间保存在磁盘上。

  • 将键与查询分开,以便批量查询可以以最高效的方式自动管理键池。

  • 重构 BatchQuery::run(我知道它在发布这个长期悬而未决的更新之前已经工作,但这不是我最自豪的代码片段)。

简单示例

extern crate quandl_v3;

use quandl_v3::Result;
use quandl_v3::prelude::*;

fn main() {
    let query = {
        let mut query = DataQuery::new("WIKI", "AAPL");

         query.order(Order::asc)
              .end_date(2016, 2, 29)
              .start_date(2016, 2, 1)
              .column_index(4);

         query
    };

    let response: Vec<(String, f64)> = query.send().unwrap();

    // Print the date and closing price for Apple's stock for the month of February 2016.
    for data in &response {
        println!("{} - {}", data.0, data.1);
    }
}

本软件包编写旨在使其有用。我与Quandl无任何关联,Quandl也不会以任何方式认可此软件包。

依赖关系

~6–11MB
~221K SLoC