复制和修改元组列表



我正试图重建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,(sqlstoff))等

元组的切片返回一个元组,该元组在附加之前插入到另一个元组中。您应该将新值作为元组添加到切片中。

我已将循环的替换为列表理解,并使用从1开始的enumerate生成新值:

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

顺便说一句,注意不要使用名称list,因为它已经被内置程序使用了。

最新更新