На этом шаге мы рассмотрим методы объекта-курсора, которые применяются для этих целей.
Для обработки результата запроса применяются следующие методы объекта-курсора:
>>> import sqlite3 >>> con = sqlite3.connect ("catalog.db") >>> cur = con.cursor () >>> cur.execute ("SELECT * FROM user") <sqlite3.Cursor object at 0x023D6DA0> >>> cur.fetchone() (1, 'unicross@mail.ru', 'password1') >>> print (cur.fetchone()) None
>>> cur.execute ("SELECT * FROM user") <sqlite3.Cursor object at 0x023D6DA0> >>> cur.__next__() (1, 'unicross@mail.ru', 'password1') >>> cur.__next__() Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> cur.__next__() StopIteration
Цикл for на каждой итерации вызывает метод __next__() автоматически. Поэтому для перебора записей достаточно указать объект-курсор в качестве параметра цикла. Выведем все записи из таблицы rubr:
>>> cur.execute ("SELECT * FROM rubr") <sqlite3.Cursor object at 0x023D6DA0> >>> for id_rubr, name in cur: print ("{0} | {1}".format (id_rubr, name)) 1 | Программирование 2 | Музыка 3 | Поисковые порталы 4 | Кино
>>> cur.execute ("SELECT * FROM rubr") <sqlite3.Cursor object at 0x023D6DA0> >>> cur.arraysize 1 >>> cur.fetchmany() [(1, 'Программирование')] >>> cur.fetchmany(2) [(2, 'Музыка'), (3, 'Поисковые порталы')] >>> cur.fetchmany(3) [(4, 'Кино')] >>> cur.fetchmany() []
>>> cur.execute ("SELECT * FROM rubr") <sqlite3.Cursor object at 0x023D6DA0> >>> cur.fetchall() [(1, 'Программирование'), (2, 'Музыка'), (3, 'Поисковые порталы'), (4, 'Кино')] >>> cur.fetchall() [] >>> cur.close()
На следующем шаге мы закончим изучение этого вопроса.