Mer*_*lin 3 python mysql sqlite python-db-api
如果 Newdata 是 x 列的列表,如何获取唯一列数——第一个元组的成员数。(Len 不重要。)更改“?”的数量。匹配列并使用下面的语句插入。
csr = con.cursor()
csr.execute('Truncate table test.data')
csr.executemany('INSERT INTO test.data VALUES (?,?,?,?)', Newdata)
con.commit()
Run Code Online (Sandbox Code Playgroud)
通过“Newdata 是 x 列的列表”,我想您的意思是x tuples,从那以后您继续谈论“第一个元组”。如果Newdata是元组列表,y = len(Newdata[0])则 是这些元组中第一个元组中的项目数。
假设这是您想要的数字(并且所有元组最好具有相同数量的项目,否则executemany 将会失败!),@Nathan 的答案中的总体思路是正确的:使用适当数量的逗号分隔问号构建字符串:
holders = ','.join('?' * y)
Run Code Online (Sandbox Code Playgroud)
然后将其插入 SQL 语句的其余部分。@Nathan 的插入方式适用于大多数 Python 2.any 版本,但如果您有 2.6 或更高版本,
sql = 'INSERT INTO testdata VALUES({0})'.format(holders)
Run Code Online (Sandbox Code Playgroud)
目前是首选(它也适用于 Python 3.any)。
最后,
csr.executemany(sql, Newdata)
Run Code Online (Sandbox Code Playgroud)
会做你想做的事。完成后请记住提交交易!-)