如果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/

10-12 15:01