我有一个文本字段的mysql表,其中包含字符串格式的列表和字符串。
我希望将它们放在一个字典中。我在pictysql中使用了DictCursor。
这是我的代码:
data = {}
temp = {}
cursor = dbconn.cursor(pymysql.cursors.DictCursor)
query = "select * from table1"
cursor.execute(query)
r = cursor.fetchall()
for result in r:
print(result)
temp['names'] = ast.literal_eval(result['names']) # list of strings
temp['symbols'] = ast.literal_eval(result['symbols']) # list of strings
temp['country'] = result['country'] # string
data[result['id']] = temp
print(data)
我的表中有2行,循环中的print语句逐行打印出完美的行。但是打印(数据)打印出一个dict,它是第二个dict的两倍。
我不知道为什么会发生这种情况,有人可以向我解释一下吗?
答案 0 :(得分:0)
最简单的解决方案是在循环中移动temp
字典的创建:
data = {} # dict data still created here
# other stuff
for result in r:
print(result)
temp = {} # create new dict here
temp['names'] = ast.literal_eval(result['names']) # list of strings
temp['symbols'] = ast.literal_eval(result['symbols']) # list of strings
temp['country'] = result['country'] # string
data[result['id']] = temp
print(data) # should show different dicts, one for each result