如何解决 Operand should contain 1 column(s) for update multiple rows in python?
How solve Operand should contain 1 column(s) for update multiple rows in python?
我想在 python 中使用单个查询更新多行。我使用 executemany 基于以下 但我得到了这个错误:
Operand should contain 1 column(s)
这是我的代码,显示了我如何创建需要的行的值列表 update.I 更新其发布只是字符串的行 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)], 'york'), ([(21, 0.5803983509540558), (18, 0.5671890079975128), (24, 0.5287801623344421), (9, 0.5264906287193298), (15, 0.47776609659194946)], 'yang'), ([(12, 0.6617408990859985), (3, 0.6475195586681366), (15, 0.4491569995880127), (24, 0.4268345832824707), (21, 0.40550071001052856)], 'world')]
MySQL Error [1241]: Operand should contain 1 column(s)
明确列表的最后一个成员 keyValue 是 world 和 postinglist 是元组的第一部分。
我的代码的问题是我发送 p 作为列 postings 的元组列表。我在代码的以下行中将 p 更改为 str(p) ,问题就解决了。
list.insert(i, (str(p),keyValue))
我想在 python 中使用单个查询更新多行。我使用 executemany 基于以下
Operand should contain 1 column(s)
这是我的代码,显示了我如何创建需要的行的值列表 update.I 更新其发布只是字符串的行 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)], 'york'), ([(21, 0.5803983509540558), (18, 0.5671890079975128), (24, 0.5287801623344421), (9, 0.5264906287193298), (15, 0.47776609659194946)], 'yang'), ([(12, 0.6617408990859985), (3, 0.6475195586681366), (15, 0.4491569995880127), (24, 0.4268345832824707), (21, 0.40550071001052856)], 'world')] MySQL Error [1241]: Operand should contain 1 column(s)
明确列表的最后一个成员 keyValue 是 world 和 postinglist 是元组的第一部分。
我的代码的问题是我发送 p 作为列 postings 的元组列表。我在代码的以下行中将 p 更改为 str(p) ,问题就解决了。
list.insert(i, (str(p),keyValue))