循环

时间:2018-02-03 20:40:08

标签: python mysql dictionary

我有一个文本字段的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的两倍。

我不知道为什么会发生这种情况,有人可以向我解释一下吗?

1 个答案:

答案 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