首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:使用NoneType()时,“NoneType”对象不可订阅

TypeError:使用NoneType()时,“NoneType”对象不可订阅
EN

Stack Overflow用户
提问于 2022-11-04 07:59:34
回答 2查看 21关注 0票数 0
代码语言:javascript
复制
cur.execute(""" 
            CREATE TEMPORARY VIEW bobby_view AS
            SELECT heading1, heading2
            FROM bobby 
            WHERE heading2 = %s; """, (variable,))


            cur.execute("""
            SELECT d1.heading1
            FROM bobby_view d1
            WHERE d1.heading1 >= ALL (
                SELECT d2.heading1
                FROM bobby_view d2);
            """) 
            
            answer = cur.fetchone()[0]

这会产生错误:

TypeError:“NoneType”对象不可订阅

这是我的代码结构。变量是作为函数参数输入的整数,它在上面的代码之前已被转换为字符串。

第二个代码块找到最高的heading1数据。我已经测试了它自己,我很有信心它的工作。因此,我认为错误来自于视图中未正确使用的变量。如有任何帮助或建议,将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2022-11-04 08:04:23

您可以参考文档这里

set返回查询结果集的下一行并返回单个序列,如果没有更多的行可用,则返回一个序列,因此如果您正在获取最后一行,则会出现错误。试试这样的东西,

代码语言:javascript
复制
answer = cur.fetchone()
while answer is not None:
  print(answer)
  answer = cur.fetchone()
票数 0
EN

Stack Overflow用户

发布于 2022-11-04 08:11:52

尝试:

代码语言:javascript
复制
cur.execute("""
        SELECT d1.heading1
        FROM bobby_view d1
        WHERE d1.heading1 >= ALL (
            SELECT d2.heading1
            FROM bobby_view d2);
        """) 
        
        answer = cur.fetchone()
        answer = answer[0] of answer else 'default'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74313801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档