我有以下内容:
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
。
答案 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