我正在使用下面的代碼使用 tokio-postgres 插入 Postgres DB,有沒有更好的選擇:
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, ¶ms[..]).await; //p is the pool manager
uj5u.com熱心網友回復:
不:
- 同時插入多個值
- 能否通過在 VALUES 中指定多行來插入多行?
您可以通過使用迭代器稍微改進它:
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})"))
}),
);
但是,我真的不認為這更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/454925.html
標籤:PostgreSQL 锈 多插入 东京邮报
上一篇:Postgres:值等于十進制值
