如果Newdata是x列的列表,那么如何获得唯一列的数目——第一个元组的成员数目。(Len不重要。)更改“?”的编号匹配列并使用下面的语句插入。
csr = con.cursor()
csr.execute('Truncate table test.data')
csr.executemany('INSERT INTO test.data VALUES (?,?,?,?)', Newdata)
con.commit()
最佳答案
“Newdata是x列的列表”,我想您指的是x
元组,从那时起,您就一直在说“第一个元组”。如果Newdata
是元组列表,y = len(Newdata[0])
是这些元组中第一个元组中的项数。
假设这是您想要的数目(并且所有元组最好具有相同数目的项,否则executemany
将失败!),在@Nathan的答案中,一般的想法是正确的:用适当数量的逗号分隔的问号构建字符串:
holders = ','.join('?' * y)
然后将其插入SQL语句的其余部分。@Nathan的插入方法适用于大多数Python2.any版本,但是如果您有2.6或更高版本,
sql = 'INSERT INTO testdata VALUES({0})'.format(holders)
是当前的首选(它也适用于Python3.any)。
最后,
csr.executemany(sql, Newdata)
做你想做的事。记住一旦你完成了交易就提交!-)
关于python - 使用Python快速将许多列插入Sqlite\Mysql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3732490/