2013-06-27 6 views
1

pyodbc에서 SQLalchemy로 라이브러리를 변환하고 있습니다. 불행하게도 나는이 오류가 무엇입니까 :SQLalchemy에서 열을 압축하는 행?

@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

부분까지 불고하는

입니다 여기에

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

나의 기능입니다

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

문제는 그 {} 구문은 자동으로 튜플의 목록을 사전으로 변환하지 않습니다.

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

으로 전환하면 도움이됩니다.

>>> 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} 
: 여기

파이썬 쉘 간단한 예가