【问题标题】:mysql - Fix error "TypeError: 'long' object is not iterable"mysql - 修复错误“TypeError: 'long' object is not iterable”
【发布时间】:2020-02-03 06:25:33
【问题描述】:

错误信息:

TypeError: 'long' object is not iterable

错误信息中指出的代码:

def maxRowsTable():
    for row in x.execute("SELECT COUNT(temp) from sensors"): #this
        maxNumberRows=row[0]
    return maxNumberRows

我的 MySQLdb 连接:

conn = MySQLdb.connect(
    host="localhost",
    user="user",
    passwd="pass",
    database="data"
)
x = conn.cursor()

提前致谢!

【问题讨论】:

  • 您的查询只返回一行。为什么需要循环读取呢?

标签: python mysql flask raspberry-pi mysql-python


【解决方案1】:

由于您的查询返回单个记录,因此无需迭代。

所以:

x.execute("SELECT COUNT(temp) from sensors")
row = x.fetchone()
maxNumberRows = row[0]

【讨论】:

  • cursor.execute 返回一个自动获取的迭代器。
  • 应该是fetchone。 Python 不使用 camelCase。
  • 对不起,我是一个完全的初学者。 x.fetchOne() 是什么,它说这是一个 AttributeError
  • 感谢@Barmar 的修复。我确实需要提高我的 Python 技能...
  • 显然我的第一条评论是依赖于实现的。标准的 Python 游标规范没有说明 cursor.execute() 返回的内容。一些接口返回一个迭代器,但显然 MysqlDB 没有。
猜你喜欢
  • 2022-08-18
  • 2022-12-15
  • 2019-09-21
  • 2021-08-08
  • 1970-01-01
  • 2020-10-02
  • 2019-04-28
  • 2017-08-01
  • 1970-01-01
相关资源
最近更新 更多