为什么要返回元组?
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
我有以下内容:
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