Python zip for循环只执行一次,而不是60次

Python zip for循环只执行一次,而不是60次,python,mysql,loops,python-3.x,for-loop,Python,Mysql,Loops,Python 3.x,For Loop,我有许多python列表,从中我将数据传输到MySQL数据库。 从技术上讲,每个列表变量都有60个值。但是在执行for循环时,只更新了1条记录,而不是60条记录。我使用PythonZip表单很久了,从来没有遇到过问题 flg=1 prodcat="sac" for a,b,c,d,e,f,g,h,o,p,q,r,s,t,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as1,at1,au in zip(lipgurl,lipdate,lid

我有许多python列表,从中我将数据传输到MySQL数据库。 从技术上讲,每个列表变量都有60个值。但是在执行for循环时,只更新了1条记录,而不是60条记录。我使用PythonZip表单很久了,从来没有遇到过问题

flg=1
prodcat="sac"

for a,b,c,d,e,f,g,h,o,p,q,r,s,t,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as1,at1,au in zip(lipgurl,lipdate,lides,liref,liname,licontry,listype,liprice,licurcy,lim,licolor,licond,lisize,liwidth,liheight,lidepth,liwish,limsg,liselracc,librand,liuoid,lifolby,lifolwing,lilikes,lisolddt,libuyer,liusprice,lipbought,libuyernm,libuyacc,libuycont,libuytype,liselrid,lisrcpage):
    myid="VC"+str(flg)
    cur.execute("INSERT INTO details VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",(myid,a,au,ag,rdate,b,prodcat,c,d,e,at1,f,g,h,o,an,p,q,r,s,t,ab,ac,ad,ae,af,ai,aj,ak,al,am,ao,ap,aq,ar,as1))
    flg=flg+1
    print("Database updated")
con.commit()
为了检查每个列表变量中是否有60个值,我在上面的循环中插入了一个循环并打印出来。它打印出所有60个值


我哪里做错了?有什么建议吗?

很可能您的列表中只有一个元素,因此zip只返回一个项目元组,使用而不是zip应该可以解决您的问题(您将得到项目的填充zip…):


很可能您的列表中只有一个元素,因此zip只返回一个项目元组,使用而不是zip应该可以解决您的问题(您将得到项目的填充zip…):


@谢谢你,伙计!成功了!。我从来不知道有这样的事情存在。只有一个更正,在python 3中,我们使用zip_longest而不是izip_longest。我不知道是谁否决了你的答案!如果我有声誉,我会投票。@Rou nair,你的问题清楚地说明为了检查每个列表变量是否有60个值,我在上面的循环中插入了一个循环并打印出来。它会打印出所有60个值。如果你得到了所有60个值,怎么会缺少59个值呢?@padraiccnningham在上面的循环中,我插入了另一个循环作为lipgur:print(item)中的item的
。实际上,如果随机列表有60个值或者没有,我会逐个检查它们。所以,如果我一次取一个列表变量并打印它,它会打印出所有60个值,但不是在一个zip中。现在使用ablove进行更正answer@Ro_nair答案更新,谢谢您的更正!很高兴帮助你)祝你好运@安德烈·伊瓦内科,谢谢!说到你的回答,我现在终于有了那么多的名声。哈哈:)@Andriy谢谢你,伙计!成功了!。我从来不知道有这样的事情存在。只有一个更正,在python 3中,我们使用zip_longest而不是izip_longest。我不知道是谁否决了你的答案!如果我有声誉,我会投票。@Rou nair,你的问题清楚地说明为了检查每个列表变量是否有60个值,我在上面的循环中插入了一个循环并打印出来。它会打印出所有60个值。如果你得到了所有60个值,怎么会缺少59个值呢?@padraiccnningham在上面的循环中,我插入了另一个循环作为lipgur:print(item)
中的item的
。实际上,如果随机列表有60个值或者没有,我会逐个检查它们。所以,如果我一次取一个列表变量并打印它,它会打印出所有60个值,但不是在一个zip中。现在使用ablove进行更正answer@Ro_nair答案更新,谢谢您的更正!很高兴帮助你)祝你好运@安德烈·伊瓦内科,谢谢!说到你的回答,我现在终于有了那么多的名声。lol:)
from itertools import zip_longest


flg=1
prodcat="sac"

for a,b,c,d,e,f,g,h,o,p,q,r,s,t,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as1,at1,au\
        in zip_longest(lipgurl,lipdate,lides,liref,liname,licontry,listype,liprice,licurcy,lim,
                        licolor,licond,lisize,liwidth,liheight,lidepth,liwish,limsg,liselracc,librand,
                        liuoid,lifolby,lifolwing,lilikes,lisolddt,libuyer,liusprice,lipbought,libuyernm,
                        libuyacc,libuycont,libuytype,liselrid,lisrcpage):
    myid="VC"+str(flg)
    cur.execute("INSERT INTO details VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",(myid,a,au,ag,rdate,b,prodcat,c,d,e,at1,f,g,h,o,an,p,q,r,s,t,ab,ac,ad,ae,af,ai,aj,ak,al,am,ao,ap,aq,ar,as1))
    flg=flg+1
    print("Database updated")
con.commit()