gpt4 book ai didi

postgresql - 在 Rust 中使用 Tokio-postgres 向 Postgres 插入多个值

转载 作者:行者123 更新时间:2023-12-05 01:24:06 25 4
gpt4 key购买 nike

我正在使用以下代码使用 tokio-postgres 插入到 Postgres 数据库中,是否有更好的选择:

let members = &[obj] //obj is a struct
let mut params = Vec::<&(dyn ToSql + Sync)>::new();
let mut i = 1;
let mut qry:String = "insert into tablename(id,userid,usertype) values".to_string();
for column in members{
if(i ==1){
qry = format!("{} (${},${},${})",qry,i,i+1,i+2);
}else{
qry = format!("{}, (${},${},${})",qry,i,i+1,i+2);

}
params.push(&column.id);
params.push(&column.userid);
params.push(&column.usertype);
i = i+3;

}
println!("qry : {}",qry);
let result = p.execute(&qry, &params[..]).await; //p is the pool manager

最佳答案

否:

您可以通过使用迭代器略微改进它:

use itertools::Itertools; // For tuples() and format_with()

let params: Vec<_> = members
.iter()
.flat_map(|row| [&row.id as &(dyn ToSql + Sync), &row.userid, &row.usertype])
.collect();
let query = format!(
"insert into tablename(id, userid, usertype) values {}",
(0..params.len())
.tuples()
.format_with(", ", |(i, j, k), f| {
f(&format_args!("(${i}, ${j}, ${k})"))
}),
);

但是我真的不认为那更好。

关于postgresql - 在 Rust 中使用 Tokio-postgres 向 Postgres 插入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71684651/

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