Описание курсора (список столбцов) представляет собой 7-кортеж, хотя в наборе результатов только один столбец - PullRequest
0 голосов
/ 19 марта 2020

Я использую соединитель sqlite и проверяю cursor, возвращенный query:

  curs = s.conn.cursor()
  curs.execute("select count(distinct category) as ncats from part")
  rows = curs.fetchall()

Изучая curs.description() в отладчике, мы видим, что это 7-кратный набор один столбец ncats плюс 6 None с.

print(f'cursor description type: {type(curs.description)} 
        len: {len(curs.description[0])}')

cursor description type: <class 'tuple'> len: 7

Ну, чем больше, тем лучше ?? Для чего они - и следует ли ожидать, что в результатах всегда будет шесть дополнительных участников?

enter image description here

1 Ответ

1 голос
/ 20 марта 2020

Из документации :

description

Этот атрибут только для чтения предоставляет имена столбцов последнего запроса. Чтобы оставаться совместимым с Python DB API, он возвращает 7-кортеж для каждого столбца, где последние шесть элементов каждого кортежа равны None.

Из документации DB API :

Каждая из этих последовательностей содержит информацию, описывающую один столбец результатов:

  • name
  • type_code
  • display_size
  • internal_size
  • точность
  • масштаб
  • null_ok

Первые два элемента (name и type_code) являются обязательными, остальные пять являются необязательными и устанавливаются в None, если никакие значимые значения не могут быть предоставлены.

name - единственный из тех, которые имеют смысл в системе типов sqlite.

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