detect_oid

detect_oid(data_values, is_array=False, nested=0)
Параметры:
  • data_values (Any) – Значения данных для анализа

  • is_array (bool) – Флаг определения массива

  • nested (int) – Уровень вложенности массивов

Результат:

Кортеж (OID, длина, масштаб, вложенность)

Тип результата:

tuple[int, …]

Определение OID типа PostgreSQL по значениям данных Python.

Описание:

Анализирует образцы данных Python и определяет соответствующий тип PostgreSQL с его параметрами (OID, длина, масштаб, вложенность).

Алгоритм работы:

  1. Поиск первого не-NULL значения в данных

  2. Определение класса значения Python

  3. Поиск соответствия в словаре AssociatePyType

  4. Для массивов - рекурсивный анализ элементов

  5. Возврат OID массива (с префиксом _) если is_array=True

Словарь соответствий AssociatePyType:

Ключ: тип Python → Значение: (OID_скалярный, OID_массива, длина, масштаб)

Примеры:

  • int(20, 1016, 8, 0)

  • str(25, 1009, -1, 0)

  • Decimal(1700, 1231, -1, 0)

Особенности:

  • Поддержка вложенных массивов (рекурсивный анализ)

  • Автоматическое определение уровня вложенности

  • Игнорирование NULL значений при определении типа

  • Поддержка pandas Timestamp и numpy типов

Использование:

В metadata_from_frame() для автоматического определения типов данных при экспорте DataFrame.