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, длина, масштаб, вложенность).
Алгоритм работы:
Поиск первого не-NULL значения в данных
Определение класса значения Python
Поиск соответствия в словаре
AssociatePyTypeДля массивов - рекурсивный анализ элементов
Возврат 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.