2016-08-04 105 views
0

我試圖通過從查詢中創建一個元組列表來重建一個SQL表,然後用我需要改變的數據創建一個新的元組列表,然後將元組列表插入到元組中SQL。除了一件事外,我似乎已經把所有東西都弄倒了。當我重新創建列表時,SQL查詢中可能有任意數量的列,我需要對此進行補償。唯一需要改變的值是每個元組中的第一個值。這裏是我到目前爲止的代碼:複製和修改元組列表

import pymysql 

cnx=pymysql.connect(dbstuff) 
cursor=cnx.cursor() 
cursor.execute("SELECT * FROM og_tbl ORDER BY ip_addr,Port ASC") 
results=cursor.fetchall() 

i=1 
list=[] 
for line in results: 
    list.append((i,line[1:])) 
    i += 1 
values = ', '.join(map(str,list)) 
query="INSERT INTO tmp_tbl VALUES {}".format(values) 
cursor.execute(query) 
cnx.commit() 
cnx.close() 

這讓我看起來像下面的每個元組的結果。我無法弄清楚如何做到這一點,因此括號只在每個元組的外部。

(1,(sqlstuff)),(2,(sqlstuff))等

回答

0

您有元組返回的元組,其被插入在另一元組切片之前追加 。您應該將新值作爲元組添加到切片。

我已經更換了for循環列表理解和使用enumerate開始1,生成新的價值觀:

lst = [(i,)+line[1:] for i, line in enumerate(results, 1)] 

在一個側面說明,注意不要使用名稱list因爲這已經被內建使用。

+0

完美的作品。謝謝! – Daryl