2015-12-07 3 views
0

Я новичок в psycopg2 и postgress, я могу получить данные из
postgress. но я столкнулся следующий вопрос
Как преобразовать массив кортежей в словарь

 kart_user = "kart_user" 
     token = 'acf98c76a70a4a67b6d503377279c7da' 
     cond = "token"+ " = " +"'{}'".format(token) 
     cur = conn.cursor() 
     cur.execute("SELECT * FROM "+ kart_user +" where "+cond +" ;") 
     res = cur.fetchall() 
     data = cur.fetchall() 
     print data 

Выход

[('acf98c76a70a4a67b6d503377279c7da', 'sssssssss', 'hello', 'sssssss')] 

Вывод массива формата кортежа, я хочу получить в виде словаря

eg: data['token'] 

Как может Я решу эту проблему? Благодарю вас

+0

Каковы ключи и каковы значения в словаре, который вы хотите построить? – toti08

+0

ключ - столбец таблицы, а значение - значения столбца –

+0

Вы видели [psycopg2 docs] (http://initd.org/psycopg/docs/extras.html#dictionary-like-cursor)? – RedBaron

ответ

0
DataDictionary ={} //out of the data collection loop 

while collectingData==True: 
    DataDictionary['%s'%token] = data[0][1:] 

это создаст словарь и добавит запись с токеном (в виде строки) в качестве ключа. Если другая переменная подходит как уникальный ключ, вы можете это использовать.

получить определенный ключ, используя один из методов ниже

DataDictionary['acf98c76a70a4a67b6d503377279c7da'] = ('sssssssss', 'hello', 'sssssss') 

or DataDictionary[token] = ('sssssssss', 'hello', 'sssssss') 

Если вы хотите, чтобы данные в виде словаря вы должны сначала создать словарь с линией:

DictionaryName={ } 

Этот инициализация словаря должна выполняться вне цикла сбора данных или вы потеряете старые данные.

Вы могли бы упростить сложение строки данных для:

DataDictionary['%s'%token] = data 

Но это хранит данные, вложенные в ненужные списки. Если это должно быть проще , то, возможно, я не понимаю, что вам действительно нужно от этого.

+0

Да, но бит сложный, это любой другой способ i –

Смежные вопросы