2013-06-27 3 views
1

Я конвертирую свою библиотеку с помощью pyodbc в SQLalchemy. К сожалению, я получаю эту ошибку:zipping строк с столбцами в SQLalchemy?

TypeError("unhashable type: 'list'",)

Вот моя функция:

@route('/api/query/<query>') # not a public system! 
def qry(query): 
    # `conn` is constructed with `create_engine` 
    last_query = conn.execute(query) 

    return dict(result=[{zip(last_query._metadata.keys, row)} 
         for row in last_query.fetchall()]) 

И мой pyodbc один (который работает):

conn.cursor.execute(query) 
    return dict(results=[dict(zip([column[0] for column 
            in conn.cursor.description], row)) 
        for row in conn.cursor.fetchall()]) 

ответ

1

Часть, которая взорвав является

{zip(last_query._metadata.keys, row)} 

Проблема заключается в том, что синтаксис {} не будет автоматически преобразовывать список кортежей в словарь. Если вы переключитесь на

dict(zip(last_query._metadata.keys, row)) 

Вы должны быть добры идти.

Вот упрощенный пример в оболочке Python:

>>> a = ['a', 'b'] 
>>> b = [1, 2] 
>>> {zip(a, b)} 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 
>>> dict(zip(a, b)) 
{'a': 1, 'b': 2} 

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

  • Нет связанных вопросов^_^