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 次下载
57KB
897 行
Quandl v3 API 的 Rust 绑定。
该库的目的是提供一个文档齐全、功能完善且易于使用的接口,以访问 Quandl 的 RESTful API。
该库广泛使用了 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