我希望使用Peewee选择一列中的所有值。
例如,如果我有表
Organization Year
company_1 2000
company_1 2001
company_2 2000
....
只返回组织列中的唯一值[即company_1
和company_2
]
我认为可以使用http://docs.peewee-orm.com/en/latest/peewee/api.html#SelectQuery.distinct
记录的distinct
选项
我目前的代码:
organizations_returned = organization_db.select().distinct(organization_db.organization_column).execute()
for item in organizations_returned:
print (item.organization_column)
不会导致返回不同的行(导致例如company_1
两次)。
我试过的另一种选择:
organization_db.select().distinct([organization_db.organization_column]).execute()
在[ ]
选项中包含disctinct
,虽然看起来与文档更加一致,却导致错误peewee.OperationalError: near "ON": syntax error
:
我认为可以直接从Peewee返回唯一值 - 如果是这样,我做错了什么?
模型结构:
cd_sql = SqliteDatabase(sql_location, threadlocals=True, pragmas=(("synchronous", "off"),))
class BaseModel(Model):
class Meta:
database = cd_sql
class organization_db(BaseModel):
organization_column = CharField()
year_column = CharField()
答案 0 :(得分:5)
所以coleifer得到的是Sqlite不支持DISTINCT ON
。这不是一个大问题,我认为你可以完成你想要的事情:
organization_db.select(organization_db.organization).distinct()