我创建了一个方法,从数据库中提取数据,将其转换为json格式并返回JSON响应。
def getEchoResource(self):
try:
row = self.cursor.execute("SELECT * FROM echo_resource_log WHERE DATE(last_update) = CURDATE();")
if row:
response = app.response_class(response=json.dumps(dict(self.cursor.fetchall())), status=200, mimetype='application/json')
return response
except MySQLdb.Error as e:
logger.error("Error %d: %s" % (e.args[0],e.args[1]))
except Exception, e:
logger.error("Error : ", str(e))
该方法抛出此错误消息 - ValueError:'字典更新序列元素#0的长度为4; 2是必需的'
追踪 -
>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/
updateEchoResource.py(123)getEchoResource()
-> row = self.cursor.execute("SELECT * FROM echo_resource_log WHERE
DATE(last_update) = CURDATE();")
(Pdb) n
>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/
updateEchoResource.py(124)getEchoResource()
-> if row:
(Pdb) n
>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/
updateEchoResource.py(125)getEchoResource()
-> response =
app.response_class(response=json.dumps(dict(self.cursor.fetchall())),
status=200, mimetype='application/json')
(Pdb) n
ValueError: 'dictionary update sequence element #0 has length 4; 2 is
required'
>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/
updateEchoResource.py(125)getEchoResource()
行返回 -
('n3pvap168', 'X2Linux_NSS', 'Contact does not exist in Contacts table', datetime.datetime(2017, 7, 21, 4, 27, 37))
答案 0 :(得分:2)
您可能知道的Python字典是一组无序的键值对。因此,字典中的每个条目都必须有一个键和一个值。这里发生的是你试图将一个四个对象的序列转换成一个字典,如你的行所示(因此错误预期长度为2,长度为4)。
要解决此问题,您需要将4长度数据结构转换为2长度数据结构。这可以通过创建长度为2的数组并将要用作数组的0索引中的键和1-index中的其余行的字符串存储来完成。您可以使用切片来实现此目的。