4个版本 (2个重大更新)
0.3.0 | 2023年11月14日 |
---|---|
0.2.1 | 2021年1月10日 |
0.2.0 | 2020年12月31日 |
0.1.0 | 2020年12月21日 |
在过程宏类别中排名第839
每月下载量4,509次
在16个库中使用(通过neo4rs)
7KB
144 代码行
Neo4rs
neo4rs
是针对Neo4j图数据库的驱动程序,由Rust编写。
neo4rs
实现了bolt规范
此驱动程序与Neo4j 5.x和4.4版本兼容。仅支持最新的5.x版本,遵循Neo4j版本支持策略。
API文档:
示例
// concurrent queries
let uri = "127.0.0.1:7687";
let user = "neo4j";
let pass = "neo";
let graph = Graph::new(&uri, user, pass).await.unwrap();
for _ in 1..=42 {
let graph = graph.clone();
tokio::spawn(async move {
let mut result = graph.execute(
query("MATCH (p:Person {name: $name}) RETURN p").param("name", "Mark")
).await.unwrap();
while let Ok(Some(row)) = result.next().await {
let node: Node = row.get("p").unwrap();
let name: String = node.get("name").unwrap();
println!("{}", name);
}
});
}
//Transactions
let mut txn = graph.start_txn().await.unwrap();
txn.run_queries([
"CREATE (p:Person {name: 'mark'})",
"CREATE (p:Person {name: 'jake'})",
"CREATE (p:Person {name: 'luke'})",
])
.await
.unwrap();
txn.commit().await.unwrap(); //or txn.rollback().await.unwrap();
MSRV
该库的最小支持Rust版本(MSRV)为1.63.0
。
MSRV(最低支持 Rust 版本)的变化不被视为破坏性更改。对于1.0.0版本之后的变化,MSRV 的更改可以在小版本增量中完成(例如,1.1.3 -> 1.2.0);对于1.0.0版本之前的变化,MSRV 的更改可以在补丁版本增量中完成(例如,0.1.3 -> 0.1.4)。
实施进度
[!重要] 此驱动程序仍在开发中,并非所有功能都已实现。
仅支持 Bolt 版本 4.0 和 4.1。后续版本的支持正在计划中。
这意味着,某些功能如书签或元素 ID 目前尚不支持。
开发
测试
此包包含单元测试和集成测试。单元测试使用 cargo test --lib
运行,无需运行 Neo4j 实例。集成测试使用 cargo test
运行,并需要运行中的 Neo4j 实例。
运行集成测试
要运行测试,您需要运行 docker 或现有的 Neo4j 实例。推荐使用 docker,因为测试不一定会在运行后清理。
使用 Docker
要使用 Docker 运行测试,您需要安装并运行 Docker。您可以通过设置环境变量 NEO4J_VERSION_TAG
来控制使用的 Neo4j 版本。默认版本是 4.2
。测试将使用具有指定版本标记的官方 neo4j
Docker 镜像。
您可能会遇到恐慌或测试失败,错误信息为 'failed to start container'。在这种情况下,请在运行测试之前先使用 docker pull neo4j:$NEO4J_VERSION_TAG
下载镜像。
这可能会发生在您使用的是镜像不支持的机器架构时,例如苹果硅 Mac 电脑上的 arm64
。在这种情况下,下载镜像将失败,显示消息类似于 'no matching manifest for linux/arm64/v8'。您需要使用 --platform
标志为不同的架构下载镜像,例如 docker pull --platform linux/amd64 neo4j:$NEO4J_VERSION_TAG
。Docker 中有一个实验性选项可以使用 Rosetta 运行这些镜像,这样测试就不会花费很长时间(请参阅 Docker 文档)。
您也可以使用像 4.4
这样的 newer neo4j 版本,它支持 arm64
架构。
使用现有的 Neo4j 实例
要使用现有的 Neo4j 实例运行测试,您需要将环境变量 NEO4J_TEST_URI
设置为连接字符串,例如 neo4j+s://42421337thisisnotarealinstance.databases.neo4j.io
。默认用户是 neo4j
,但可以使用环境变量 NEO4J_TEST_USER
进行更改。默认密码是 neo
,但可以使用环境变量 NEO4J_TEST_PASS
进行更改。
某些测试可能会根据 Neo4j 版本运行不同的查询。您可以使用环境变量 NEO4J_VERSION_TAG
来设置 Neo4j 实例的版本。
建议只运行单个集成测试,并在测试后手动清理数据库。
env NEO4J_TEST_URI=neo4j+s://42421337thisisnotarealinstance.databases.neo4j.io NEO4J_TEST_USER=neo4j NEO4J_TEST_PASS=supersecret NEO4J_VERSION_TAG=5.8 cargo test --test <name of the integration test, see the file names in lib/tests/>
更新 CI 的 Cargo.lock
文件
我们进行了 CI 测试,以验证 MSRV 以及依赖项的最小版本。最小版本是满足 Cargo.toml
条目的最低版本,而不是默认的最高版本。
如果您更改了 Cargo.toml
中的任何内容,您需要更新 CI 的 Cargo.lock
文件。
本项目使用 xtask 帮助更新锁定文件。
建议在运行以下命令之前关闭所有编辑器,或者更具体地说,关闭此项目的所有 rust-analyzer 实例。
更新 ci/Cargo.lock.msrv
# If there are errors, update Cargo.toml to fix and try again from the top.
# You might have to downgrade or remove certain crates to hit the MSRV.
# A number of such downgrades are already defined in the `update_msrv_lock` function
# in the xtask script.
# Alternatively, you might suggest an increase of the MSRV.
cargo xtask msrv
使用 xtask
需要系统上已安装 curl
和 jq
。
更新 ci/Cargo.lock.min
# If there are errors, update Cargo.toml to fix and try again from the top.
cargo xtask min
使用 xtask
需要系统上已安装 curl
和 jq
。
许可证
Neo4rs 许可证根据您的选择,可以是以下之一
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
依赖项
~285–740KB
~18K SLoC