【问题标题】:Why is tuple being returned?为什么要返回元组?
【发布时间】:2015-03-26 11:12:59
【问题描述】:

我有以下几点:

tableNumber = session.query(TABLE.TABLESNUMBER).filter_by(TABLESID=self.TABLESID).first()         
return str(tableNumber)

这是我的TABLE 班级:

class TABLE(Base):

    ....   

    TABLESID = Column(Integer, primary_key=True)
    TABLESNUMBER = Column(Integer, nullable=False)

    ...

这是我收到的输出:

(1L,)

在我的mySQL database 中,以上两个值都表示为ints

我希望1 被退回。

【问题讨论】:

标签: python mysql sqlalchemy


【解决方案1】:

query().first() 返回第一行。这就是返回元组的原因。查询不关心第一行中只有 1 个值,导致长度为 1 的元组。

如果您确定查询将只返回 1 个标量值,您可以使用 scalar() 而不是 first()。请阅读链接的文档。

edit:要获取第一个返回元组中的第一个值,当查询可能返回多行时,您可以将order_by(...).limit(1)添加到查询中然后使用scalar(),或者获取第一行然后显式将元组转换为 int。

【讨论】:

    【解决方案2】:

    first() 和 all() 返回“元组”

    所以,
    session.query(TABLE.TABLESNUMBER).filter_by(TABLESID=self.TABLESID).first() 返回它的元组,包括 'TABLESNUMBER'

    如果您只需要一个值 (TABLESNUMBER)

    你可以使用它。 session.query(TABLE.TABLESNUMBER).filter_by(TABLESID=self.TABLESID).first().TABLESNUMBER

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 2016-06-08
      • 2018-08-08
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      相关资源
      最近更新 更多