首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rusqlite插入多行

Rusqlite插入多行
EN

Stack Overflow用户
提问于 2021-01-19 18:45:19
回答 1查看 278关注 0票数 2

如何使用rusqlite在单个查询中插入多行?查看下面的语法,我认为它失败了,因为查询期望Vec中只有一个值。

是否可以使用任何类型的helper函数来完成,或者我是否必须创建完整的查询?

代码语言:javascript
复制
    let mut names = Vec::new();
    names.push("Mittens");
    names.push("Jingle Paws");
    names.push("Sir Fluffy");
    match conn.execute(
        "INSERT INTO cats (name) VALUES (?1)",
        names,
    ) {
        Ok(_t) => (),
        Err(e) => {
            let gil = Python::acquire_gil();
            let py = gil.python();
            let error_message = format!("Error inserting cats into database! {}", e.to_string());
            PyIOError::new_err(error_message).restore(py);
            return Err(PyErr::fetch(py));
        }
    };

代码语言:javascript
复制
OSError: Error inserting cats into database! Wrong number of parameters passed to query. Got 2, needed 1
EN

回答 1

Stack Overflow用户

发布于 2021-01-19 19:10:11

我是否必须创建完整的查询?

我很确定就是这个。

据我所知,rusqlite没有提供任何类型的批处理API,因此您有两个选择:

  • 动态创建多值查询,例如

让placeholders = names.iter().map(|_| "(?)").collect::>().join(",");让Q= format!("INSERT INTO cats (name) VALUES {}",placeholders);...conn.execute(q,names) ...

对查询执行

  • prepare操作,然后在循环中(在transaction)

中)执行execute操作

第一种可能是最有效的,但它也更粗糙,不太安全,更难调试。

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

https://stackoverflow.com/questions/65789938

复制
相关文章

相似问题

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