from_iterable¶
- DBHose.from_iterable(dtype_data: Iterable[Any])¶
- Параметры:
dtype_data (Iterable[Any]) – Итерируемый объект с данными для загрузки
- Исключение:
TypeError – Если переданный объект не является итерируемым
Загрузка данных из Python итерируемого объекта в целевую СУБД.
Описание:
Выполняет полный цикл загрузки данных из итерируемого объекта:
Создает временную таблицу (
create_temp)Загружает данные из итерируемого объекта (
from_rows)Проверяет качество данных (
dq_check)Переносит в целевую таблицу (
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 - Перенос в целевую таблицу