如何使用 postgres crate 处理查询返回的可选值?
问题:如何使用 postgres crate 处理查询返回的可选值? 我正在尝试获取查询的值,但该值可以为 NULL,我不知道如何在 Rust 中处理它。这是我的代码: let stmt = conn.prepare("SELECT * FROM pictures").unwrap(); for row in stmt.query(&[]).unwrap() { let id: i32 = row
·
问题:如何使用 postgres crate 处理查询返回的可选值?
我正在尝试获取查询的值,但该值可以为 NULL,我不知道如何在 Rust 中处理它。这是我的代码:
let stmt = conn.prepare("SELECT * FROM pictures").unwrap();
for row in stmt.query(&[]).unwrap() {
let id: i32 = row.get("id");
let author: String = row.get("author");
let description: String = row.get("description");
let rating: String = row.get("rating");
let gps_lat: String = row.get("gps_lat");
let gps_long: String = row.get("gps_long");
let date_taken: chrono::NaiveDate = row.get("date_taken");
println!("id -> {}\n
author -> {}\n
description -> {}\n
rating -> {}\n
gps_lat -> {}\n
gps_long -> {}\n
date -> {}\n
", id, author, description, rating, gps_lat, gps_long, date_taken);
}
当我执行代码时,第一张图片很好,因为评级列不为空。但是第二张图片失败并给了我“Conversion(WasNull)”,因为没有评级,我尝试将 NULL 转换为 chrono::NaiveDate。
解答
如文档中所述:
可空性
除了上面列出的类型之外,
FromSql
是针对Option<T>
实现的,其中T
实现了FromSql
。一个Option<T>
代表一个可为空的 Postgres 值。
为可以为NULL的字段请求一个Option<Type>
;然后库会自动将 NULL 转换为None
:
let rating: Option<String> = row.get("rating");
更多推荐
已为社区贡献19918条内容
所有评论(0)