【问题标题】:Python check number is less thanPython校验数小于
【发布时间】:2021-01-09 20:35:17
【问题描述】:
if uservar[0][0] == text_hashed:
                sql = "SELECT expires FROM akeys WHERE user = %s"
                var = (message.author.id,)
                mycursor.execute(sql, var)
                myresultrank = mycursor.fetchall()
                guild = client.get_guild(CENSORED)

                if myresultrank < 1:
                    print("Less")
                else:
                    print("Normal")

                sql = """UPDATE akeys SET user = %s WHERE license = %s"""
                val = (message.author.id, text_hashed)
                mycursor.execute(sql, val)
                mydb.commit()

我正在尝试检查数据库中的数字是否小于 1,但出现此错误

await coro(*args, **kwargs)
File "My Path", line 529, in 
on_message
if myresultrank < 1:
TypeError: '<' not supported between instances of 'list' and 'int'

【问题讨论】:

  • 如错误消息中所述,myresultrank 是一个列表。如果您不知道它应该包含什么,您可以尝试打印它。
  • fetchall() 将所有数据放入一个列表中。现在为了检查元素计数是否使用 len。如果您希望数据库元素采用第一个元素并在必要时将类型转换为整数 int(myresultrank[0])

标签: python discord discord.py


【解决方案1】:

fetchall() 为您提供所有匹配的记录,因此您的错误消息中提到了“列表”。您需要访问 myresultrank 列表中的元素。您不能将查询结果列表与整数进行比较。

【讨论】:

    【解决方案2】:

    尝试这些更改

                    myresultrank = mycursor.fetchone()
    
    

    。 . .

                    if myresultrank[0] < 1:
    
    

    【讨论】:

    • 虽然只有代码的答案可能会回答这个问题,但您可以通过为您的代码提供上下文、此代码工作的原因以及一些文档参考以供进一步阅读,从而显着提高您的答案质量.来自How to Answer“简洁是可以接受的,但更全面的解释更好。”
    【解决方案3】:

    此行返回list

    myresultrank = mycursor.fetchall()
    

    稍后,我们会尝试将列表与整数进行比较,这会导致您的错误。

    如果列表包含您要提取的值,以便您可以将其与整数 (int) 进行比较,则可以以类似于以下方式对该值进行索引:

    if myresultrank[i] < 1:
    

    其中i 是列表中存储您关心的值的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多