Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 10, 2017 13:21:41

freezer
Зарегистрирован: 2015-12-24
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Python Database API

из спецификации
description
Этот атрибут только для чтения: последовательность последовательностей с 7 элементами. Каждая из этих последовательностей содержит информацию, описывающую один столбец результата: (name, type_code, display_size, internal_size, precision, scale, null_ok). Этот атрибут будет None для операций, которые не возвращают строки, или если курсор не имел операции, вызываемой через метод executeXXX().
Код type_code может интерпретироваться, сравнивая его с Type Objects


не понятно как это работает, например - firebirdsql
после select

 cursor.description
 [('N_FLOAT', 482, 17, 4, 17, 0, True), ('N_INTEGER', 496, 11, 4, 11, 0, True)]
rows[0]
(11.600000381469727, 1958)
вопрос что такое type_code - 482 496

Офлайн

#2 Окт. 4, 2017 04:06:02

freezer
Зарегистрирован: 2015-12-24
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Python Database API

все как и предполагал просто но не очевидно,
в спецификации

 class DBAPITypeObject:
  def __init__(self,*values):
    self.values = values
  def __cmp__(self,other):
    if other in self.values:
       return 0
    if other < self.values:
       return 1
    else:
      return -1
как реализовано в psycopg2
>>> print(psycopg2.NUMBER.values)
(20, 23, 21, 701, 700, 1700)
>>> print(cursor.description)
Column(name='id', type_code=23, display_size=None, internal_size=4, precision=None, scale=None, null_ok=None)
>>> print(psycopg2.NUMBER==23)
True
сравнение может использоваться для select с параметрами

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version