Postgresql & Sqlalchemy 获取所有查询并排除某些列

Postgresql & Sqlalchemy fetching all query with excluding some column

我正在使用 sqlalchemy 从我的 postgresql 数据库中获取数据:

elif domain:
    query = universities.select().where(universities.c.domains == domain)
    return await database.fetch_one(query)
    
    

代码看起来像这样,不知何故它包含 "id"

{
  "id": 5788,
  "name": "American University of Middle East",
  "alpha_two_code": "KW",
  "country": "Kuwait",
  "web_pages": "http://www.aum.edu.kw/",
  "domains": "aum.edu.kw",
  "state_province": null
}

使用 execute 我可以做类似的事情:

SELECT name, alpha_two_code, country, web_pages, domains, state_province
FROM universities

等等...

但是我怎样才能用 sqlalchemy 的查询实现它,我试过这样的东西

elif domain:
    query = universities.select().where(universities.c.domains == domain)
    return await database.fetch_one(query).prefix_with(universities.column_name != "id")

我知道这行不通,但有没有办法获取除某些值以外的所有数据?在我的例子中除了 id?

看看:

https://docs.sqlalchemy.org/en/13/core/tutorial.html#coretutorial-selecting

选择特定列

如果我们想更仔细地控制放置在 select 的 COLUMNS 子句中的列,我们从 Table 中引用单独的 Column 对象。这些可作为 Table 对象的 c 属性的命名属性使用:


from sqlalchemy.sql import select
>>> s = select([users.c.name, users.c.fullname])
sql
>>> result = conn.execute(s)
>>> for row in result:
...     print(row)
(u'jack', u'Jack Jones')
(u'wendy', u'Wendy Williams')

更新。其他选项是使用 exclude:

exclude_properties –

要从映射中排除的一个列表或一组字符串列名称。

或:

按照我的操作从数据字典构建列列表,从列表中删除列并将其传递给查询