python - sqllite - что это за объект? 0 - подписывается - PullRequest
1 голос
/ 26 сентября 2019

После получения объекта курсора следующим образом:

db = sqlite3.connect("froshims.db")
cur = db.cursor()
rows = cur.execute("select * from registrants")

Я смог напечатать содержимое таблицы с помощью

1) метода извлечения

dd=rows.fetchone()
print(dd)

или2) by for

for row in rows:
    print(f"{row} registered")

Тем не менее, когда я пытаюсь сделать это, просто делая печать (строки [0]), это не доступно.Я видел ошибку, говорящую о том, что строки не могут быть подписаны сами по себе, но как я могу прочитать их для метода как такового 2)?если метод 2) сам по себе не подлежит подписке, он не должен читаться, не так ли?

1 Ответ

0 голосов
/ 26 сентября 2019

Просто для информации вы можете зацикливаться на объектах, которые не являются подписными (как вы заметили) и это не нарушает код.

  • Чтобы объект был подписан, необходимо реализовать метод __getitem__().Если это отсутствует, вы не можете использовать синтаксис x[i].
  • Для зацикливания элементов в объекте необходимо реализовать методы __iter__() и __next__().Если что-то отсутствует, вы не можете использовать синтаксис for i in x:

В большинстве случаев, если итеративные протоколы реализованы, также применяются нижние индексы.(наоборот)

В документации по питону есть упоминание об обоих методах здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...