2010-09-17 53 views
2

如果Newdata是x列的列表,將如何獲得數字唯一列 - 第一個元組的成員數。 (Len不重要。)改變「?」的數量匹配列並使用下面的語句插入。使用Python將許多列快速插入到Sqlite Mysql

csr = con.cursor() 
csr.execute('Truncate table test.data') 
csr.executemany('INSERT INTO test.data VALUES (?,?,?,?)', Newdata) 
con.commit() 

回答

3

通過「Newdata爲x列清單」,我想你的意思是x元組,從此以後你繼續講「第一元組」的。如果Newdata是元組列表,則y = len(Newdata[0])是這些元組中第一個元素的項目數。

假設這是你想要的數量(以及所有元組最好有相同數量的項目,否則executemany失敗!),在@彌敦道的回答的總體思路是正確的:有適當數量的建立字符串逗號分隔問號:

holders = ','.join('?' * y) 

然後將其插入到SQL語句的其餘部分。 @彌敦道的方式接入是適合大多數的Python版本凡因,但如果你有2.6或更好,

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

目前是首選(它也可以在Python 3.any)。

最後,

csr.executemany(sql, Newdata) 

會做你的願望。記住一旦完成就完成交易! - )

0

如果你正在尋找的項目在Newdata所有元素的最大數目,它只是:

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

這當然,假定蟒蛇2.5或更高版本。

不,我敢肯定,你會嘗試什麼工作,但隨後的INSERT語句會成爲:

SQL = 「INSERT INTO test.data VALUES(%S)」 % 「」 加盟(「?」 * NUM_COLUMNS)