Python 如何使用ExecuteMy将列表列表插入SQLite

Python 如何使用ExecuteMy将列表列表插入SQLite,python,sqlite,python-3.x,Python,Sqlite,Python 3.x,我试图在sqlite表中插入许多行,因此我试图使用executemany 我有这样的设置: data_list = [['apples',10,'red'],['bananas',5,'yellow']] dbc.executemany(' insert into table (fruit, colour) values (?,?)', (data_list[0],data_list[2])) 如您所见,我不需要数据列表中的所有内容,在这种情况下,我不需要数字

我试图在sqlite表中插入许多行,因此我试图使用
executemany

我有这样的设置:

data_list = [['apples',10,'red'],['bananas',5,'yellow']]

dbc.executemany('
   insert into table
   (fruit, colour)
   values
   (?,?)',
   (data_list[0],data_list[2]))
如您所见,我不需要
数据列表中的所有内容,在这种情况下,我不需要数字

问题是,尽管我指定了要使用列表中的哪些项,但我还是收到了此错误:

sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用2,提供了3个。


如何使用ExecuteMy将数据导入sqlite?我真的不想把数据推到正确的长度(和顺序)列表中-有更好的方法吗?

我必须诚实,我不知道数据库。另一方面,数据列表只有两个元素。无法调用data_list[2],因为这是data_list的第三个元素(不存在)。如果您想要
['apples',10,'red']
您应该键入
数据列表[0]
,如果您想要
['panana',5,'yellow']
您应该键入
数据列表[1]
。据我所知,您不需要数字,因此我将创建两个新列表,除数字外,其他内容相同

data_list = filter(lambda x : x not in range(1000) , data_list[0]),
filter(lambda y : y not in range(1000)  , data_list[1])

现在数据列表等于数据列表=[['apples','red'],['panana',yellow']

由于您只插入部分数据,最本能的解决方案可能是使用
execute()
而不是
executemany()
。如果你没有太多的数据,这不会让你太慢

但是如果您真的想使用
executemany()
,您可能需要
zip()
并将数据压缩两次。在介质中,
list()
用于提供下标功能。这是我的密码:

data_list = [['apples',10,'red'],['bananas',5,'yellow']]
firstZip = list(zip(*data_list))
secondZip = zip(firstZip[0], firstZip[2])
dbc.executemany('insert into fruitTable (fruit, colour) values (?,?)', 
                secondZip)
注意,
executemany()
将序列的iterable作为输入。因此,如果只需要一个变量,并且使用一维列表作为输入,
zip()
也应用于消除ValueError:

dbc.executemany('insert into fruitTable (fruit) values (?)', zip(fruitNameList))

从我的测试来看,
executemany
恐怕不是这样工作的。它在列表上迭代,因此
data\u list[0]
第一次插入包含“苹果”,第二次插入包含“香蕉”。这是违反直觉的,但它似乎就是这样工作的。我真的很抱歉,但是你激励我学习sql并用python操作对应的模块!非常感谢。