Сообщить об ошибке.

Объект Row модуля sqlite3 в Python

Получить значение столбцов по имени при запросе к базе

Объект sqlite3.Row служит высоко оптимизированным row_factory для объектов Connection. Он пытается имитировать кортеж в большинстве своих функций.

Он поддерживает доступ к результату запроса как к словарю, где ключ это имя столбца. Так же поддерживает обращение к столбцу по индексу, итерацию по строкам запроса, проверку на равенство и встроенную функцию len() для подсчета количества строк запроса.

Если два объекта подряд имеют одинаковые столбцы, а их элементы равны, то эти объекты считаются равными.

Метод объекта sqlite3.Row.

cursor.keys():

Метод cursor.keys() возвращает список имен столбцов. Сразу после запроса, это первый элемент каждого кортежа в Cursor.description.

Инициализируем базу и вставим таблицу,:

conn = sqlite3.connect(":memory:")
c = conn.cursor()
c.execute('''create table stocks
(date text, trans text, symbol text,
 qty real, price real)''')
c.execute("""insert into stocks
          values ('2006-01-05','BUY','RHAT',100,35.14)""")
conn.commit()
c.close()

Теперь подключим класс sqlite3.Row:

>>> conn.row_factory = sqlite3.Row
>>> cursor = conn.cursor()
>>> cursor.execute('select * from stocks')
# <sqlite3.Cursor object at 0x7f4e7dd8fa80>
>>> r = cursor.fetchone()
>>> type(r)
# <class 'sqlite3.Row'>
>>> tuple(r)
# ('2006-01-05', 'BUY', 'RHAT', 100.0, 35.14)
>>> len(r)
# 5
>>> r[2]
# 'RHAT'
>>> r.keys()
# ['date', 'trans', 'symbol', 'qty', 'price']
>>> r['qty']
# 100.0
>>> for member in r:
...     print(member)
...
# 2006-01-05
# BUY
# RHAT
# 100.0
# 35.14