сделано ДЗ args, kwargs
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "6d37ef1e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Задача 1. Список таблиц для обработки\n",
|
||||
"Напиши функцию process_tables, которая принимает любое количество названий таблиц через *args.\n",
|
||||
"Функция должна:\n",
|
||||
" вывести строку \"Начинаем обработку\";\n",
|
||||
" затем для каждой таблицы вывести:\n",
|
||||
"\n",
|
||||
"Обрабатываем таблицу: users"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"id": "e10a9075",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Начинаем обработку\n",
|
||||
"Обрабатываем таблицу: users\n",
|
||||
"Обрабатываем таблицу: orders\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def process_tables(*args):\n",
|
||||
" print(\"Начинаем обработку\")\n",
|
||||
" for table in args:\n",
|
||||
" print(f\"Обрабатываем таблицу: {table}\")\n",
|
||||
"\n",
|
||||
"process_tables(\"users\", \"orders\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "1b0576ec",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Задача2. Напиши функцию build_select_query, которая принимает:\n",
|
||||
" table_name\n",
|
||||
" любое количество колонок через args\n",
|
||||
"Логика:\n",
|
||||
"если колонки не переданы, вернуть:\n",
|
||||
"\n",
|
||||
" SELECT * FROM users\n",
|
||||
"\n",
|
||||
"если колонки переданы, вернуть:\n",
|
||||
" \n",
|
||||
" SELECT id,name,email FROM users"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 25,
|
||||
"id": "5dfaa1e0",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"SELECT id, name FROM users\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def build_select_query(table_name, *args):\n",
|
||||
" if args:\n",
|
||||
" arg = \", \".join(args)\n",
|
||||
" else:\n",
|
||||
" arg = \"*\"\n",
|
||||
" return f\"SELECT {arg} FROM {table_name}\"\n",
|
||||
"print(build_select_query(\"users\", \"id\", \"name\"))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a95cdb0a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Задача 3. Напиши функцию create_connection_config, которая принимает:\n",
|
||||
" connection_name\n",
|
||||
" любое количество именованных параметров через *kwargs\n",
|
||||
"Функция должна вернуть словарь вида:\n",
|
||||
"\n",
|
||||
" {\n",
|
||||
" \"connection_name\":\"source_pg\",\n",
|
||||
" \"settings\": {\n",
|
||||
" \"host\":\"localhost\",\n",
|
||||
" \"port\":5432,\n",
|
||||
" \"user\":\"etl_user\"\n",
|
||||
" }\n",
|
||||
" }"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 37,
|
||||
"id": "69c1b275",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'connection_name': 'source_pg', 'settings': {'host': 'localhost', 'port': 5432, 'user': 'etl_user'}}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def create_coonnection_config(connection_name, **kwargs):\n",
|
||||
" config = {\n",
|
||||
" \"connection_name\" : connection_name,\n",
|
||||
" \"settings\" : kwargs\n",
|
||||
" }\n",
|
||||
" return config\n",
|
||||
"result = create_connection_config(\"source_pg\",host=\"localhost\",port=5432,user=\"etl_user\")\n",
|
||||
"print(result)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ce6811bd",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Задача 4. Запуск ETL-задачи\n",
|
||||
"Напиши функцию run_etl_task, которая принимает:\n",
|
||||
" task_name\n",
|
||||
" любое количество колонок через args\n",
|
||||
" любое количество опций через *kwargs\n",
|
||||
"Логика:\n",
|
||||
" вывести имя задачи;\n",
|
||||
" вывести список колонок;\n",
|
||||
" вывести словарь с опциями.\n",
|
||||
"Пример:\n",
|
||||
"\n",
|
||||
" run_etl_task(\n",
|
||||
" \"load_users\",\n",
|
||||
" \"id\",\"name\",\"email\",\n",
|
||||
" source=\"s3\",\n",
|
||||
" target=\"greenplum\",\n",
|
||||
" mode=\"append\",\n",
|
||||
" retries=3\n",
|
||||
" )"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 40,
|
||||
"id": "bd011ce6",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"['load_users', ('id', 'name', 'email'), {'source': 's3', 'target': 'greenplum', 'mode': 'append', 'retries': 3}]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def run_etl_task(tsk_name, *args, **kwargs):\n",
|
||||
" config = [tsk_name, args, kwargs]\n",
|
||||
" return config\n",
|
||||
"print(run_etl_task(\"load_users\", \"id\",\"name\",\"email\", source=\"s3\", target=\"greenplum\", mode=\"append\", retries=3))"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.13.7"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in New Issue
Block a user