为什么要返回元组?

Why is tuple being returned?

我有以下内容:

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

这是我的 TABLE class:

class TABLE(Base):

    ....   

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

    ...

这是我收到的输出:

(1L,)

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

我只想 1 被退回。

query().first() returns 第一行。这就是元组被 returned 的原因。查询不关心第一行只有 1 个值,结果是一个长度为 1 的元组。

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

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

first() 和 all() return 'tuple'

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

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

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