【问题标题】:SQL alchemy query a single columnSQLalchemy 查询单列
【发布时间】:2021-07-26 19:49:52
【问题描述】:

我确信之前已经回答了这个问题,并且我看到了一些相关的答案,但似乎没有一个是我面临的问题。我正在使用一个 SQL Alchemy 模型,该模型在下面使用一个 SQL 服务器数据库,并且我正在使用它通过会话查询数据库。正常查询等工作正常,没有错误。但是,当我只要求一个字段而不是全部时,它会给我一个错误(见下文)。 基本上归结为最简单的我有一个这样的模型:

class FactoryShop(Base):
   # case insensitive, refers to the actual table in the DB called factoryshop
   __tablename__ = 'factoryshop'
   ID = Column(Integer, primary_key=True, autoincrement=True)
   Name = Column(String(255))
   Parts = Column(Integer)
   Strength = Column(Integer)
   Average = Column(Float)
   ...

使用会话我可以像这样查询所有列:

>>> session.query(FactoryShop).filter(FactoryShop.Parts==20000)
<sqlalchemy.orm.query.Query object at 0x10578c280>

但是,如果我尝试只询问下面的名称,我会收到一个很长的错误。我搜索了涉及“可选”的特定错误,但没有找到相关答案。

>>> session.query(FactoryShop.Name).filter(FactoryShop.Parts==20000)
AttributeError: Neither 'AnnotatedColumn' object nor 'Comparator' object has an attribute 'selectable'

如果已经有答案请指点我,我会删除这个。

【问题讨论】:

    标签: python sql-server sqlalchemy


    【解决方案1】:

    您没有正确查询它。但你很接近。

    result = session.query(FactoryShop).filter(FactoryShop.Parts==20000).first()
    

    然后,您可以调用 result.Name 来获取该 FactoryShop 对象的名称。

    【讨论】:

    • 我知道这一点,但我想避免查询所有字段,然后得到我想要的。这似乎类似于从 FactoryShop 中选择 *,其中部件 = 20000。我想从 FactoryShop 中选择名称,其中 parts=20000
    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2020-05-02
    • 2013-01-21
    相关资源
    最近更新 更多