1

我正在将我的库从使用 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 一个(有效):

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

1 回答 1

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}
于 2013-06-28T06:07:55.910 回答