gpt4 book ai didi

rust - 如何在查询中动态插入列名! Rust 的 sqlx 中的宏

转载 作者:行者123 更新时间:2023-12-04 07:33:30 25 4
gpt4 key购买 nike

我正在使用 sqlx crate与 Postgres 实例交互。
我有以下功能:

pub async fn fetch_tweets_by_metric(
pool: &PgPool,
metric: &str,
) -> Result<Vec<Tweet>, sqlx::error::Error> {
let tweets = sqlx::query_as!(
Tweet,
r#"
SELECT *
FROM tweets
ORDER BY $1 DESC
"#,
metric,
)
.fetch_all(pool)
.await?;
Ok(tweets)
}
我想按表中的一列对结​​果进行排序,作为 metric 传入.如果我只是传递一个带有列名的字符串,它就不起作用(即上面的代码被破坏了)。
正确的做法是什么?我在文档/谷歌上找不到任何内容。

最佳答案

宏仅可用于常量 SQL。
如果您的 sql 是动态的,请使用 query功能:

pub async fn fetch_tweets_by_metric(
pool: &PgPool,
metric: &str,
) -> Result<Vec<Tweet>, sqlx::error::Error> {
let sql = format!(
r#"
SELECT *
FROM tweets
ORDER BY {} DESC
"#,
metric,
);
let tweets = sqlx::query(sql)
.fetch_all(pool)
.await?;
Ok(tweets)
}

关于rust - 如何在查询中动态插入列名! Rust 的 sqlx 中的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67842746/

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