如何在sqlalchemy中定义唯一的json列? (postgres)

时间:2018-08-01 05:29:46

标签: json sqlalchemy

我想通过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"

有什么想法吗?

2 个答案:

答案 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

希望它对您有用。