首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >python - sqllite -这是什么对象?0-可订阅

python - sqllite -这是什么对象?0-可订阅
EN

Stack Overflow用户
提问于 2019-09-26 14:27:13
回答 1查看 16关注 0票数 1

在获得如下所示的游标对象后,

代码语言:javascript
代码运行次数:0
运行
复制
db = sqlite3.connect("froshims.db")
cur = db.cursor()
rows = cur.execute("select * from registrants")

我可以通过以下两种方式打印表内容

1)获取方法

代码语言:javascript
代码运行次数:0
运行
复制
dd=rows.fetchone()
print(dd)

或2)通过for

代码语言:javascript
代码运行次数:0
运行
复制
for row in rows:
    print(f"{row} registered")

但是,当我试图通过简单地执行print(rows)来执行此操作时,它是不可访问的。我看到了一个错误,说行本身是不可订阅的,但是我如何才能通过这样的方法来读取它呢?如果它本身不是可订阅的,那么方法2)应该是不可读的,不是吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-26 14:45:32

只是为了获取信息,你可以循环遍历不可订阅的对象(正如你已经注意到的),而且它不会破坏代码。

  • 要使对象可订阅,它需要实现__getitem__()方法。如果缺少这个,就不能使用x[i]语法。
  • 循环遍历对象中的项,它需要实现__iter__()__next__()方法。如果缺少,则不能使用for i in x:语法

在大多数情况下,如果实现了可迭代协议,那么下标协议也会实现。(反之)

python文档的here中提到了这两种方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58110738

复制
相关文章

相似问题

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