from_iterable

DBHose.from_iterable(dtype_data: Iterable[Any])
Параметры:

dtype_data (Iterable[Any]) – Итерируемый объект с данными для загрузки

Исключение:

TypeError – Если переданный объект не является итерируемым

Загрузка данных из Python итерируемого объекта в целевую СУБД.

Описание:

Выполняет полный цикл загрузки данных из итерируемого объекта:

  1. Создает временную таблицу (create_temp)

  2. Загружает данные из итерируемого объекта (from_rows)

  3. Проверяет качество данных (dq_check)

  4. Переносит в целевую таблицу (to_table)

Поддерживаемые итерируемые объекты:

  • Списки (list) - список словарей или список кортежей

  • Кортежи (tuple) - кортеж словарей или кортеж кортежей

  • Генераторы (generator) - генератор, возвращающий строки данных

  • Любые объекты, поддерживающие протокол итератора

Формат данных:

Данные должны быть представлены в виде итерируемой последовательности, где каждый элемент представляет одну строку данных. Каждая строка может быть:

  • Словарь (dict) - где ключи соответствуют именам столбцов

  • Кортеж (tuple) - где порядок значений соответствует порядку столбцов в таблице

Примеры:

# Загрузка из списка словарей (рекомендуемый формат)
data_dicts = [
    {'id': 1, 'name': 'Alice', 'age': 25},
    {'id': 2, 'name': 'Bob', 'age': 30},
    {'id': 3, 'name': 'Charlie', 'age': 35}
]
dbhose.from_iterable(data_dicts)

# Загрузка из списка кортежей
data_tuples = [
    (1, 'Alice', 25),
    (2, 'Bob', 30),
    (3, 'Charlie', 35)
]
dbhose.from_iterable(data_tuples)

# Загрузка из генератора (для больших объемов данных)
def data_generator():
    for i in range(1000):
        yield {'id': i, 'name': f'User_{i}', 'value': i * 10}

dbhose.from_iterable(data_generator())

# Загрузка из файла построчно (пример с CSV)
import csv

def read_csv_file(filename):
    with open(filename, 'r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            yield row

dbhose.from_iterable(read_csv_file('data.csv'))

Примечания:

  • Для больших объемов данных рекомендуется использовать генераторы вместо списков

  • Порядок данных в кортежах должен строго соответствовать порядку столбцов в таблице

  • При использовании словарей порядок ключей не важен

  • Метод автоматически преобразует типы Python в типы СУБД

См. также:

  • create_temp - Создание временной таблицы

  • dq_check - Проверка качества данных

  • to_table - Перенос в целевую таблицу