【问题标题】:Insert list of tuples into sqlite3 database with unknown tuple size将元组列表插入到具有未知元组大小的 sqlite3 数据库中
【发布时间】:2021-03-10 12:52:37
【问题描述】:

我目前正在将一个元组列表插入到一个包含 4 个变量的 sql 表中,如下所示:

conn.executemany('INSERT INTO table values (?,?,?,?)', values_list)

但是,我想通过允许解析的元组为任意长度(即任意数量的变量)来使其更加灵活。有没有办法做如下的事情?

conn.executemany(f'INSERT INTO table values {(?)*len(values_list[0])}', values_list)

【问题讨论】:

    标签: python sql sqlite sql-insert


    【解决方案1】:

    如果一个表有 3 列,例如 col1col2col3,那么您可以像这样插入新行:

    INSERT INTO tablename(col1, col2, col3) VALUES (?, ?, ?)
    

    或不枚举所有列名:

    INSERT INTO tablename VALUES (?, ?, ?)
    

    或者如果您不想为其中一列传递值,请说col2

    INSERT INTO tablename(col1, col3) VALUES (?, ?)
    

    上述语句有效,因为每个 ? 值都将传递到其各自的列。

    但是像这样的声明:

    INSERT INTO tablename VALUES (?, ?)
    

    会因错误而失败:

    table 表名有 3 列,但提供了 2 个值

    因此,除非您提供将接收传递值的列名,否则您不能向 INSERT 语句传递更少的值。

    【讨论】:

      猜你喜欢
      • 2019-09-25
      • 2011-12-24
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2013-11-27
      相关资源
      最近更新 更多