在获得如下所示的游标对象后,
db = sqlite3.connect("froshims.db")
cur = db.cursor()
rows = cur.execute("select * from registrants")
我可以通过以下两种方式打印表内容
1)获取方法
dd=rows.fetchone()
print(dd)
或2)通过for
for row in rows:
print(f"{row} registered")
但是,当我试图通过简单地执行print(rows)来执行此操作时,它是不可访问的。我看到了一个错误,说行本身是不可订阅的,但是我如何才能通过这样的方法来读取它呢?如果它本身不是可订阅的,那么方法2)应该是不可读的,不是吗?
发布于 2019-09-26 14:45:32
只是为了获取信息,你可以循环遍历不可订阅的对象(正如你已经注意到的),而且它不会破坏代码。
__getitem__()
方法。如果缺少这个,就不能使用x[i]
语法。__iter__()
和__next__()
方法。如果缺少,则不能使用for i in x:
语法在大多数情况下,如果实现了可迭代协议,那么下标协议也会实现。(反之)
python文档的here中提到了这两种方法
https://stackoverflow.com/questions/58110738
复制相似问题