我想通过PostgreSQL上的sqlalchemy定义一个唯一的json列。天真的方法行不通:
此:
values = db.Column(db.JSON(), nullable=False, unique=True)
为此:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) data type json has no default operator class for access method "btree"
有什么想法吗?
答案 0 :(得分:0)
创建一个新列,该列将接收json md5哈希值:
Left
将json字段和哈希的组合声明为唯一:
hash_values = db.Column(db.String(32), default="")
这样住:
__table_args__ = (db.UniqueConstraint('values', 'hash_values'))
答案 1 :(得分:-1)
我不知道您是否从sqlalchemy导入JSON,如下所示:
from sqlalchemy.types import JSON
我认为调用sqlalchemy JSON类型应该可以。您可以尝试这样的事情:
values = db.Column(JSON, nullable=False, unique=True)
记住基本类型。JSON提供键控索引操作,整数索引操作和路径索引操作。
有关更多信息,see this
希望它对您有用。