我使用与exsits表相关的peewee:
import peewee
from playhouse.postgres_ext import *
class Rules(peewee.Model):
channels = JSONField(null=True)
remark = peewee.CharField(max_length=500, null=True)
class Meta:
database = db
db_table = 'biz_rule'
schema = 'opr'
示例:在我的表中,列通道中存在记录:
["A012102","C012102","D012102","E012102"]
我想判断“A012102”是否在列表中,如何编写代码?
答案 0 :(得分:0)
如果您使用的是PostgreSQL 9.4+,则可以使用相应的jsonb
peewee字段类型使用postgres_ext.BinaryJSONField
数据类型。它具有contains_any()
和contains_all()
方法,对应于PostgreSQL ?|
和?&
运算符(see the PostgreSQL JSON docs)。所以我觉得它会是这样的:
from playhouse.postgres_ext import BinaryJSONField
class Rules(peewee.Model):
channels = BinaryJSONField(null=True)
...
query = Rules.select().where(Rules.channels.contains_all('A012102'))