这里prsnson.result包含从查询中提取的数据。我想要预期的输出,但它不会到来。我正在使用python 2.5
for row in prsnobj.result:
ansdb = {row[0] : row[1]}
print ansdb
实际:{1L:3L} {2L:4L} {3L:2L} {4L:2L} {5L:2L}
预期:{1:3,2:4,3:2,4:2,5:2}
答案 0 :(得分:1)
使用不同的数据库接口时,从数据库中提取的整数通常以Long
返回。
如果您想要输出
ansdb = {}
for row in prsnobj.result:
ansdb[int(row[0])] = int(row[1])
也许Python的MySQL documentation可以帮助解决问题
答案 1 :(得分:0)
所有L均表示它是长整数(64位)形式,因此您返回的值确实仍然正确。当你创建一个包含条目的新词典(就像你一样)时,它会自动将所有条目转换为长格式;相反,你应该使用一个元组或只是在循环中打印每个元素:
for row in prsnobj.result:
print row[0] + " : " + row[1]
或
for row in prsnobj.result:
ansdb = (row[0], row[1])
print ansdb
根据prsnobj对象的定义方式,最终可能会得到长整数。如果是这样,您需要回顾定义prsnobj的代码并检查它是否已正确创建。使用打印输出来确保对象始终处于您希望它处于的状态!
答案 2 :(得分:0)
for row in prsnobj.result:
ansdb = {int(row[0]) : int(row[1])}
print ansdb
你的结果类型很长,你应该转移到int