🦆 DuckDB + Python: мощный тандем для аналитики прямо на ноутбуке
Если вы работаете с аналитикой данных и вам важна скорость, гибкость и простота — попробуйте связку DuckDB + Python. Это встроенная колонко-ориентированная СУБД, которая отлично работает с pandas, Parquet и SQL-запросами — прямо в памяти, без сервера.
📌 Что такое DuckDB?
- Лёгкая SQL-база данных
- Работает как SQLite, но оптимизирована под аналитику
- Отлично справляется с файлами Parquet и Arrow
- Идеально для обработки больших наборов данных локально
🔗 Возможности интеграции с Python:
- Прямой запрос к pandas DataFrame:
- Работа с файлами:
- Использование SQL + pandas + визуализация в одном блоке
💡 Преимущества:
- 🚀 Быстрее pandas при агрегациях и фильтрации
- 🔗 Поддержка Parquet, CSV, JSON, Arrow и др.
- 🧠 SQL как первый язык аналитики — работает из коробки
- 🛠 Не требует отдельного сервера или установки СУБД
🧪 Это отличное решение для data science проектов, анализа больших логов, локальных ETL-задач и экспериментальной работы с данными.
🔍 Подробный гайд
#Python #DuckDB #DataAnalytics #Pandas #SQL #ETL
➡ SQL Community | Чат
Если вы работаете с аналитикой данных и вам важна скорость, гибкость и простота — попробуйте связку DuckDB + Python. Это встроенная колонко-ориентированная СУБД, которая отлично работает с pandas, Parquet и SQL-запросами — прямо в памяти, без сервера.
📌 Что такое DuckDB?
- Лёгкая SQL-база данных
- Работает как SQLite, но оптимизирована под аналитику
- Отлично справляется с файлами Parquet и Arrow
- Идеально для обработки больших наборов данных локально
🔗 Возможности интеграции с Python:
- Прямой запрос к pandas DataFrame:
con.execute("SELECT * FROM df WHERE col > 10").df()
- Работа с файлами:
con.execute("SELECT COUNT(*) FROM 'data.parquet'")
- Использование SQL + pandas + визуализация в одном блоке
💡 Преимущества:
- 🚀 Быстрее pandas при агрегациях и фильтрации
- 🔗 Поддержка Parquet, CSV, JSON, Arrow и др.
- 🧠 SQL как первый язык аналитики — работает из коробки
- 🛠 Не требует отдельного сервера или установки СУБД
🧪 Это отличное решение для data science проектов, анализа больших логов, локальных ETL-задач и экспериментальной работы с данными.
🔍 Подробный гайд
#Python #DuckDB #DataAnalytics #Pandas #SQL #ETL
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤5👍4🥰1👏1
Forwarded from Python/ django
py-pglite — обёртка PGlite для Python, позволяющая запускать настоящую базу PostgreSQL прямо при тестах. Без Docker, без настройки — просто импортируй и работай.
📌 Почему это круто:
- 🧪 Ноль конфигурации: никакого Postgres и Docker, только Python
- ⚡ Молниеносный старт: 2–3 с против 30–60 с на традиционные подходы :contentReference[oaicite:2]{index=2}
- 🔐 Изолированные базы: новая база для каждого теста — чисто и безопасно
- 🏗️ Реальный Postgres: работает с JSONB, массивами, оконными функциями
- 🔌 Совместимость: SQLAlchemy, Django, psycopg, asyncpg — любая связка :contentReference[oaicite:3]{index=3}
💡 Примеры установки:
pip install py-pglite
pip install py-pglite[sqlalchemy] # SQLAlchemy/SQLModel
pip install py-pglite[django] # Django + pytest-django
pip install py-pglite[asyncpg] # Асинхронный клиент
pip install py-pglite[all] # Всё сразу
🔧 Пример (SQLAlchemy)
python
def test_sqlalchemy_just_works(pglite_session):
user = User(name="Alice")
pglite_session.add(user)
pglite_session.commit()
assert user.id is not None
py‑pglite — идеальный инструмент для unit- и интеграционных тестов, где нужен настоящий Postgres, но без всей админской рутины.
Полноценный PostgreSQL — без его тяжеловесности.
▪Github
@pythonl
#python #sql #PostgreSQL #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4🥰3
This media is not supported in your browser
VIEW IN TELEGRAM
🗓️ SQL-трюк: как быстро найти "дыры" в данных по датам
В аналитике часто нужно понять, за какие дни нет записей — например, продаж или логов.
Вместо сложных процедур можно сгенерировать календарь через
https://www.youtube.com/shorts/CAkHyUx6iiU
#SQL #Postgres #DataAnalytics #generate_series
В аналитике часто нужно понять, за какие дни нет записей — например, продаж или логов.
Вместо сложных процедур можно сгенерировать календарь через
generate_series()
(Postgres) и сделать LEFT JOIN
к данным. Так вы мгновенно выявите пропуски и сможете строить непрерывные временные ряды.
-- Дни без заказов за последние 30 дней
WITH calendar AS (
SELECT generate_series(
current_date - interval '30 days',
current_date,
interval '1 day'
)::date AS day
),
orders_per_day AS (
SELECT
order_ts::date AS day,
COUNT(*) AS orders_count
FROM sales
WHERE order_ts >= current_date - interval '30 days'
GROUP BY order_ts::date
)
SELECT
c.day,
COALESCE(o.orders_count, 0) AS orders_count
FROM calendar c
LEFT JOIN orders_per_day o USING(day)
WHERE o.orders_count IS NULL
ORDER BY c.day;
https://www.youtube.com/shorts/CAkHyUx6iiU
#SQL #Postgres #DataAnalytics #generate_series
👍13❤8🔥4