为什么要返回元组?

时间:2015-03-26 02:50:42

标签: python mysql sqlalchemy

我有以下内容:

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

2 个答案:

答案 0 :(得分:4)

query().first()返回第一行。这就是为什么要返回一个元组。查询并不关心第一行中只有1个值,从而产生长度为1的元组。

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

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

答案 1 :(得分:1)

first()和all()返回' tuple'

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

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

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