//database Postgresql
logging_level_ENUM = ['critical', 'error', 'warning', 'info', 'debug']
loglevel = db.Column(postgresql.ENUM(logging_level_ENUM,
name='log_level_to_ENUM'),
default=logging_level_ENUM[3])
//python module
if i in logging_level_ENUM:
print i
这给了我一个错误“unhashable type:'list'”。这是什么意思,我该如何解决?
答案 0 :(得分:0)
Python列表不可清除,因为它们是可变的。你需要使用一个hashable集合,就像一个元组。
logging_level_ENUM = ('critical', 'error', 'warning', 'info', 'debug')
答案 1 :(得分:0)
基本上,当你在python中创建一个dictionnary时(很可能在你对ENUM函数的调用中发生),键需要是可清除的,这通常意味着集合需要是不可变的(这意味着它们不应该是能够被修改。)
以下是对此案例的详细解释:https://wiki.python.org/moin/DictionaryKeys
正如前面的回答所述,你可能需要使用一个可清除的集合(如元组)来解决示例代码中的问题。