繁体   English   中英

如何解决操作数应包含 1 列以更新 python 中的多行?

[英]How solve Operand should contain 1 column(s) for update multiple rows in python?

我想在 python 中使用单个查询更新多行。 我根据以下示例使用executemany ,但出现此错误:

操作数应包含 1 列

这是我的代码,它显示了我如何创建需要更新的行值列表。我更新其发布的行只是字符串NULL

def UpdatePostingList (self, data):

    queryUpdate='Update KeywordIndex2 set postings=%s where keyValue= %s'

    querySelect='SELECT postings FROM KeywordIndex2 where  keyValue= %s'
    list=[]
    try:

        for i in range(0,len(data)):
            keyValue=data[i][0]
            k=(keyValue,)
            self.cursor.execute(querySelect,k)
            postings= self.cursor.fetchall()
            pst=[x[0] for x in postings]
            if pst[0]=='NULL':
                p=data[i][1]
                list.insert(i, (p,keyValue))
        print list
        self.cursor.executemany(queryUpdate,list)
        self.connection.commit()
    except MySQLdb.Error, e:
        try:
            print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
        except IndexError:
            print "MySQL IndexError: %s" % str(e)
        self.connection.rollback()

我得到了这个输出:

[([(3,0.4698370099067688),(12,0.38598471879959106),(2,0.33203423023223877),(1,0.3257867097854614),(8,0.3251670002937317)], '纽约'),([(21,0.5803983509540558),(18, 0.5671890079975128),(24,0.5287801623344421),(9,0.5264906287193298),(15,0.47776609659194946)], '阳'),([(12,0.6617408990859985),(3,0.6475195586681366),(15,0.4491569995880127),(24, 0.4268345832824707), (21, 0.40550071001052856)], 'world')] MySQL 错误 [1241]:操作数应包含 1 列

要清楚列表的最后一个成员的keyValueworld并且postlist是元组的第一部分。

我的代码的问题是我将p作为列发布的元组列表发送。 我在下面的一行代码的我改变p海峡(p)和问题得到解决。

list.insert(i, (str(p),keyValue))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM