【问题标题】:SQLite3 - Inserting list items in tableSQLite3 - 在表中插入列表项
【发布时间】:2017-07-11 11:00:03
【问题描述】:

我正在使用 python 3.5 并尝试将列表元素插入到表格中。

列表已经定义:

list1 = [1,2,3...]
list2 = [1,2,3...]
list3 = [1,2,3...]
list4 = [1,2,3...]
list5 = [1,2,3...]

连接数据库:

conn = sqlite3.connect('database.db')
c = conn.cursor()

创建一个包含 5 列的表 Table1:

def create_table():
     c.execute("CREATE TABLE IF NOT EXISTS Table1(Column1 TEXT, Column2 TEXT, Column3 TEXT,
Column4 TEXT, Column5 TEXT)")

并将列表元素添加到表格中:

def data_entry():
    Column1 = list1
    Column2 = list2
    Column3 = list3
    Column4 = list4
    Column5 = list5
    c.execute("INSERT INTO Master (Column1, Column2, Column3, Column4, Column5)
VALUES (?, ?, ?, ?, ?)", (Column1, Column2, Column3, Column4, Column5))
    conn.commit()

c.close()
conn.close()

当我运行它时,我得到:

ProgrammingError:提供的绑定数量不正确。当前语句使用 5,提供了 150 个。

是否更适合使用循环将每个项目列表作为新行插入指定列?如果是这样,我该如何为 sqlite3 创建一个循环?

这是我第一次使用 sqlite3,因此非常感谢任何建议。谢谢!

【问题讨论】:

  • 您要输入行还是列?
  • 我正在尝试将每个列表元素输入为指定列中的新行

标签: python list sqlite


【解决方案1】:

您必须遍历列表(假设它们的长度相同):

for i in range(len(list1)):
    c.execute("INSERT INTO Master (Column1, Column2, Column3, Column4,Column5)"
              " VALUES (?, ?, ?, ?, ?)",
              (list1[i], list2[i], list3[i], list4[i], list5[i]))

【讨论】:

    【解决方案2】:

    可以使用一些捷径,效率更高:

    import sqlite3
    
    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    list3 = [7, 8, 9]
    
    con = sqlite3.connect(":memory:")
    con.execute("CREATE TABLE master(col1, col2, col3)")
    con.executemany("INSERT INTO master(col1, col2, col3) VALUES (?, ?, ?)", (list1, list2, list3))
    for row in con.execute("SELECT col1, col2, col3 FROM master"):
        print(row)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-20
      • 2019-01-30
      • 2016-05-23
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 2018-06-03
      • 2022-01-10
      相关资源
      最近更新 更多