gpt4 book ai didi

rust - 将未知类型的 PgRow 值转换为字符串

转载 作者:行者123 更新时间:2023-12-05 04:27:06 26 4
gpt4 key购买 nike

我正在尝试“ pretty-print ”查询结果。我事先不知道查询,所以我无法手动转换。我的想法是迭代 PgRow 的列信息,然后为每一列获取值。

这是我目前的代码:

fn row_to_json(row: PgRow) -> HashMap<String, String> {
let mut result = HashMap::new();
for col in row.columns() {
let name = col.name();
result.insert(name.to_string(), row.get(name));
}

result
}

但是,这会引起 panic ,因为 row.get() 不知道如何将任何类型转换为字符串(甚至是整数)。我也尝试了 serde_json::Value 但那没有用。

我应该怎么做呢?有没有一种方法可以用 Rust 表示任何可以转换为字符串的 SQL 类型,或者是否有更好的方法来格式化行?

最佳答案

经过一些挖掘(以及来自 discord 服务器的帮助),我解决了这个问题。问题是 sqlx::query 返回以二进制编码的数据,这显然不容易转换为可读字符串。

如果您直接在执行器(例如您的池)上调用 .fetch_* 方法,它将以文本形式返回结果。将其与固定代码相结合,我可以获得合理的输出。

fn row_to_json(row: PgRow) -> HashMap<String, String> {
let mut result = HashMap::new();
for col in row.columns() {
let value = row.try_get_raw(col.ordinal()).unwrap();
let value = match value.is_null() {
true => "NULL".to_string(),
false => value.as_str().unwrap().to_string(),
};
result.insert(
col.name().to_string(),
value,
);
}

result
}

关于rust - 将未知类型的 PgRow 值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72901680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com