我正在将我的库从使用pyodbc转换为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 one(有效):
conn.cursor.execute(query)
return dict(results=[dict(zip([column[0] for column
in conn.cursor.description], row))
for row in conn.cursor.fetchall()])
答案 0 :(得分:1)
爆炸的部分是
{zip(last_query._metadata.keys, row)}
问题是{}
语法不会自动将元组列表转换为字典。如果切换到
dict(zip(last_query._metadata.keys, row))
你应该好好去。
这是python shell中的一个简化示例:
>>> 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}