[英]how to solve error (1241, 'Operand should contain 1 column(s)') when using Django with MySQL
[英]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 列
要清楚列表的最后一个成员的keyValue是world并且postlist是元组的第一部分。
我的代码的问题是我将p作为列发布的元组列表发送。 我在下面的一行代码的我改变p来海峡(p)和问题得到解决。
list.insert(i, (str(p),keyValue))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.