如果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的插入方式适合大多数Python 2.任何版本,但是如果您有2.6或更好,

sql = 'INSERT INTO testdata VALUES({0})'.format(holders)

目前是首选(它也可以在Python 3中使用)。

最后,

csr.executemany(sql, Newdata)

会做你想要的。记得完成后要进行交易! - )

其他提示

如果您正在寻找所有元素中最大数量的项目 Newdata, ,只是:

num_columns = max(len(t) for t in Newdata)

当然,这假设Python 2.5或更高。

并不是我确定您的尝试会起作用,但是插入声明会变成:

sql =“插入test.data值(%s)“%”,“”。加入('??' * num_columns)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top