首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在锈蚀中使用Tokio-postgres向Postgres插入多个值

在锈蚀中使用Tokio-postgres向Postgres插入多个值
EN

Stack Overflow用户
提问于 2022-03-30 22:03:22
回答 1查看 906关注 0票数 3

我正在使用下面的代码使用tokio-postgres将Postgres DB插入到postgres数据库,有没有更好的选择:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-30 22:46:13

否:

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

代码语言:javascript
复制
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})"))
        }),
);

不过,我并不认为这样更好。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71684651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档