[英]Peewee: How to select data from Postgres where array field is empty?
這是與Postgres一起使用的簡單Peewee模型
import playhouse.postgres_ext as pg
db = pg.PostgresqlDatabase(""" credentials ... """)
class Artist(pg.Model):
name = pg.TextField()
albums = pg.ArrayField(pg.TextField, default=[])
class Meta:
database = db
db.create_table(Artist)
Artist.create(name='name1', albums=['album11', 'album12'])
Artist.create(name='name2')
對於選擇沒有專輯的藝術家,SQL查詢可能是
>> SELECT * FROM artist WHERE albums = '{}';
id | name | albums
----+-------+--------
2 | name2 | {}
或用於選擇具有特定名稱的藝術家
>> SELECT * FROM artist WHERE name = 'name1';
id | name | albums
----+-------+-------------------
1 | name1 | {album11,album12}
但是當我嘗試用Peewee實現它時,我得到了以下結果
res = Artist.select().where(Artist.name == 'name1')
assert len(res) == 1 and res[0].name == 'name1'
res = Artist.select().where(Artist.albums == '{}')
assert len(res) == 0
第一個查詢將'name1'
作為查詢參數。
第二個查詢以playhouse.postgres_ext._Array
對象作為查詢參數。
我看了有關Postgres Extensions的文檔,但沒有找到合適的文檔。
有人可以解釋我在做什么錯以及如何使用空數組字段選擇數據嗎?
您可以進入原始SQL來解決此限制:
res = Artist.select().where(SQL("albums = '{}'"))
print(len(res))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.