Загрузка данных SQL в Pandas без нехватки памяти
Если вы попытаетесь загрузитесь слишком большой объём данных в Pandas из SQL, то велика вероятность, что вашему компьютеру просто не хватит оперативной памяти, чтобы обработать такой запрос.
Этой проблемы можно избежать и в этой статье вы узнаете как:
https://tprg.ru/Rqst
#pandas #sql
Если вы попытаетесь загрузитесь слишком большой объём данных в Pandas из SQL, то велика вероятность, что вашему компьютеру просто не хватит оперативной памяти, чтобы обработать такой запрос.
Этой проблемы можно избежать и в этой статье вы узнаете как:
https://tprg.ru/Rqst
#pandas #sql
Как создать базу данных SQLite на Python
Если вы уже прокачались в Python и хотите двигаться дальше — стоит научиться работать с БД, ведь большинству программ требуется база данных для хранения информации.
В этой статье вы научитесь создавать БД и обрабатывать данные из неё в Python:
https://tprg.ru/6rEw
#sql
Если вы уже прокачались в Python и хотите двигаться дальше — стоит научиться работать с БД, ведь большинству программ требуется база данных для хранения информации.
В этой статье вы научитесь создавать БД и обрабатывать данные из неё в Python:
https://tprg.ru/6rEw
#sql
8 первоклассных инструкций SQL на каждый день
Несколько полезных SQL-инструкций, которые помогут вам экономить время при работе с данными. Сохраните себе, чтобы не забыть и воспользоваться при случае:
https://nuancesprog.ru/p/15071/
#sql
Несколько полезных SQL-инструкций, которые помогут вам экономить время при работе с данными. Сохраните себе, чтобы не забыть и воспользоваться при случае:
https://nuancesprog.ru/p/15071/
#sql
Руководство по подготовке к собеседованию по SQL
Вопросы по SQL — одна из ключевых тем собеседования на должность аналитика данных. При подготовке к такому собеседованию могут возникнуть трудности с детальной проработкой всех возможных вариантов вопросов по SQL. Эта статья поможет вам подготовиться к собеседованию для его успешного прохождения:
https://nuancesprog.ru/p/15485/
#sql
Вопросы по SQL — одна из ключевых тем собеседования на должность аналитика данных. При подготовке к такому собеседованию могут возникнуть трудности с детальной проработкой всех возможных вариантов вопросов по SQL. Эта статья поможет вам подготовиться к собеседованию для его успешного прохождения:
https://nuancesprog.ru/p/15485/
#sql
Миграция базы данных SQLAlchemy для приложений Flask с использованием Alembic
Flask-Migrate — это расширение, которое обрабатывает миграцию базы данных SQLAlchemy для приложений Flask с помощью Alembic. Операции с базой данных предоставляются в виде аргументов командной строки в
Подробную инструкцию по использованию и примеры работы можно посмотреть тут:
https://morioh.com/p/9bcd13dbee9f
#flask #sql #библиотека
Flask-Migrate — это расширение, которое обрабатывает миграцию базы данных SQLAlchemy для приложений Flask с помощью Alembic. Операции с базой данных предоставляются в виде аргументов командной строки в
flask db
команде.Подробную инструкцию по использованию и примеры работы можно посмотреть тут:
https://morioh.com/p/9bcd13dbee9f
#flask #sql #библиотека
Как запустить сервер PostgreSQL прямо в браузере
В данной статье речь пойдёт о новом инструменте, созданном с использованием Python, который называется
Подробнее о проекте можно узнать в этой статье:
https://habr.com/ru/company/skillfactory/blog/693332/
#sql #веб
В данной статье речь пойдёт о новом инструменте, созданном с использованием Python, который называется
postgres-wasm
. Это запускаемый в браузере сервер PostgreSQL с полным набором функционала, включая сохранение состояния в браузере, восстановление из pg_dump
и логическую репликацию из удалённой базы данных.Подробнее о проекте можно узнать в этой статье:
https://habr.com/ru/company/skillfactory/blog/693332/
#sql #веб
Подсчёт числа записей в БД за выбранный период времени
Частой просьбой от хозяев проекта может стать подсчёт записей по дням. Такой SQL-запрос можно встроить в код Python, который запускается по расписанию и автоматизирует подсчёт по дням.
TIMESTAMP_TRUNC() обрежет столбец даты и времени до выбранного диапазона, в нашем случае, дня. COUNT(1) создаст служебный столбец Count и выставит все значения столбца, равными единице. Затем мы сгруппируем все ряды по этой единице, тем самым произведя подсчёт числа рядов.
В результате мы получим вот такой полезный вывод данных ниже:
#SQL
Частой просьбой от хозяев проекта может стать подсчёт записей по дням. Такой SQL-запрос можно встроить в код Python, который запускается по расписанию и автоматизирует подсчёт по дням.
SELECT
TIMESTAMP_TRUNC(Timestamp, day) Timestamp,
COUNT(1) `Count`
FROM table
GROUP BY 1
ORDER BY Timestamp
TIMESTAMP_TRUNC() обрежет столбец даты и времени до выбранного диапазона, в нашем случае, дня. COUNT(1) создаст служебный столбец Count и выставит все значения столбца, равными единице. Затем мы сгруппируем все ряды по этой единице, тем самым произведя подсчёт числа рядов.
В результате мы получим вот такой полезный вывод данных ниже:
#SQL
SQL: вставка новых записей в БД или обновление существующих
Почти сразу при появлении SQL в работе появляется потребность обновлять базу. Однако вручную выслеживать, кто в большом наборе есть, а кого добавлять, — трата времени.
Запрос ниже добавляет новых сотрудников в перечень персонала. Если запись с таким именем уже существует, то эта инъекция обновит ее:
#SQL
Почти сразу при появлении SQL в работе появляется потребность обновлять базу. Однако вручную выслеживать, кто в большом наборе есть, а кого добавлять, — трата времени.
Запрос ниже добавляет новых сотрудников в перечень персонала. Если запись с таким именем уже существует, то эта инъекция обновит ее:
db = # WITH new_employees AS (
SELECT *
FROM (
VALUES ('George', 'Sales', 'Manager', 1000),
('Jane', 'R&D', 'Developer', 1200)
) AS t(name, department, role, salary)
)
INSERT INTO employees (name, department, role, salary)
SELECT name,
department,
role,
salary
FROM new_employees ON CONFLICT (name) DO
UPDATE
SET department = EXCLUDED.department,
role = EXCLUDED.role,
salary = EXCLUDED.salary
RETURNING *;
#SQL
Книга «SQL: быстрое погружение» Уолтера Шилдса
SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга идеальна для новичков, в ней вы найдёте способ мягко познакомиться с вопросом хранения данных и узнаете, почему этот стандарт до сих пор по умолчанию применяется в большинстве веб-приложений.
Профиль книги на Livelib
#SQL
SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга идеальна для новичков, в ней вы найдёте способ мягко познакомиться с вопросом хранения данных и узнаете, почему этот стандарт до сих пор по умолчанию применяется в большинстве веб-приложений.
Профиль книги на Livelib
#SQL
Порядок выполнения SQL-операций
Исчерпывающий гайд от dev-notes.ru, с помощью которого вы узнаете, почему в объединяющем запросе с фильтрацией порядок будет FROM — JOIN — WHERE — GROUP BY — HAVING — SELECT — ORDER — LIMIT, что такое SARGABLE-запросы и какие функции замедляют исполнение операций.
#sql
Исчерпывающий гайд от dev-notes.ru, с помощью которого вы узнаете, почему в объединяющем запросе с фильтрацией порядок будет FROM — JOIN — WHERE — GROUP BY — HAVING — SELECT — ORDER — LIMIT, что такое SARGABLE-запросы и какие функции замедляют исполнение операций.
#sql
Это было вопросом времени: SQL-запросы из естественного языка
На HuggingFace появилась Text-to-SQL-модель ChatDB на 6.91 млрд. параметров, что позволяет превращать обычный текстовый запрос к БД в SQL-выражение:
Вопрос: Покажи день, в который пришло больше всего пользователей
Ответ:
#sql #llm
На HuggingFace появилась Text-to-SQL-модель ChatDB на 6.91 млрд. параметров, что позволяет превращать обычный текстовый запрос к БД в SQL-выражение:
Вопрос: Покажи день, в который пришло больше всего пользователей
Ответ:
SELECT created_at::DATE AS day, COUNT(*) AS user_count
FROM users
GROUP BY day
ORDER BY user_count DESC
LIMIT 1;
#sql #llm
Суперсила для оптимизации SQL-запросов
Канал Listen IT рассказал на примерах о способах оптимизации обращений к базе. Хороший способ познакомиться с индексами и их кластеризацией.
#sql #лучшиепрактики
Канал Listen IT рассказал на примерах о способах оптимизации обращений к базе. Хороший способ познакомиться с индексами и их кластеризацией.
#sql #лучшиепрактики
This media is not supported in your browser
VIEW IN TELEGRAM
Простой мини-чат на FastApi с непростым наполнением
Нечасто попадаются такие мощные проекты с понятным объяснением, как это работает. В этом руководстве вы сможете узнать, как создать готовый рабочий чат, используя FastAPI, вебсокеты, SQLAlchemy и SQLite. В итоге вы узнаете, как работать с этими технологиями, какие возможности открывают и в каких случаях их лучше применять.
#fastapi #sql #туториал
Нечасто попадаются такие мощные проекты с понятным объяснением, как это работает. В этом руководстве вы сможете узнать, как создать готовый рабочий чат, используя FastAPI, вебсокеты, SQLAlchemy и SQLite. В итоге вы узнаете, как работать с этими технологиями, какие возможности открывают и в каких случаях их лучше применять.
#fastapi #sql #туториал
Forwarded from Веб-страница
Онлайн-песочница для обучения и тестирования SQL
SQL Playground — это бесплатный сервис, который позволяет вам изучать SQL и тестировать различные запросы как в MySQL, так и в PostgreSQL. Работает песочница прямо в браузере, при этом поддерживает подсветку синтаксиса и обладает автоматических генератором схем БД.
Пробуем по ссылке: sqlplayground.app
#инструменты #sql #бд
SQL Playground — это бесплатный сервис, который позволяет вам изучать SQL и тестировать различные запросы как в MySQL, так и в PostgreSQL. Работает песочница прямо в браузере, при этом поддерживает подсветку синтаксиса и обладает автоматических генератором схем БД.
Пробуем по ссылке: sqlplayground.app
#инструменты #sql #бд
Forwarded from Типичный программист
5 игр, чтобы подучить SQL (и не уснуть по дороге)
SQLPD — расследуете преступления как аналитик SQL-полиции. Каждое задание — отдельное дело.
SQL Island — выживаете после крушения на острове, выполняя SQL-задачи, чтобы выбраться.
SQL Murder Mystery — ищете убийцу в базе данных. Свобода действий и минимум подсказок.
Lost at SQL — спасаете подлодку и команду, проходя сюжетные SQL-челленджи.
SQL Squid Game — Решаете задачи по мотивам игры в кальмара, чтобы не повторить судьбу коллеги-аналитика.
#игры #sql
SQLPD — расследуете преступления как аналитик SQL-полиции. Каждое задание — отдельное дело.
SQL Island — выживаете после крушения на острове, выполняя SQL-задачи, чтобы выбраться.
SQL Murder Mystery — ищете убийцу в базе данных. Свобода действий и минимум подсказок.
Lost at SQL — спасаете подлодку и команду, проходя сюжетные SQL-челленджи.
SQL Squid Game — Решаете задачи по мотивам игры в кальмара, чтобы не повторить судьбу коллеги-аналитика.
#игры #sql
Как понять партиционирование: DWH для гуманитариев
На Tproger объяснили различные типы партиционирования — диапазонное, списковое и хешевое с примерами применения. Если вы подступились к действительно объемным базам, или просто столкнулись с постфиксом _* в BigQuery или других подобных продуктах, статья поможет разобраться.
#основы #sql
@zen_of_python
На Tproger объяснили различные типы партиционирования — диапазонное, списковое и хешевое с примерами применения. Если вы подступились к действительно объемным базам, или просто столкнулись с постфиксом _* в BigQuery или других подобных продуктах, статья поможет разобраться.
#основы #sql
@zen_of_python
Ошибки, которые можно избежать в SQL: грабли начинающего аналитика
Если вы только начинаете работать с SQL, статья поможет избежать типичных ошибок (пропуски, доступы, производительность).
Там вы узнаете, почему важно проверять данные после объединения таблиц и как избежать потери строк при использовании
#основы #sql
@zen_of_python
Если вы только начинаете работать с SQL, статья поможет избежать типичных ошибок (пропуски, доступы, производительность).
Там вы узнаете, почему важно проверять данные после объединения таблиц и как избежать потери строк при использовании
JOIN
.#основы #sql
@zen_of_python
Молчаливый «провал» INSERT
Вы запускаете SQL-запрос
Как можно вставить данные и не вставить одновременно?
Когда
Виновник —
Здесь мы явно говорим: "если произойдёт конфликт по
Поведение UPSERT при множественных уникальных индекса
Представьте, что в таблице есть не один, а два уникальных индекса:
Теперь вы выполняете:
А если
Вставка завершится ошибкой!
Так происходит, потому что
Чтобы избежать этого, используем:
Тогда PostgreSQL проигнорирует конфликт по любому индексу. Но это может спровоцировать проблемы, особенно при вставке пачкой
Как отладить такую ситуацию?
— Проверяйте
— Добавьте
Если возвращается пустой результат — значит, вставки не было.
— Логируйте причину. Если вы используете логику вида
#sql
Вы запускаете SQL-запрос
INSERT
, и вроде всё просто. Нет ошибок. Но и данные не вставлены. Звучит странно? Такое действительно может случиться с PostgreSQL — и случается чаще, чем хотелось бы.Как можно вставить данные и не вставить одновременно?
Когда
INSERT
не срабатывает, первое, что приходит в голову — ошибка. Но PostgreSQL умеет «глотать» такое — ведь вы сами его об этом попросили.Виновник —
ON CONFLICT DO NOTHING
INSERT INTO users (id, email)
VALUES (42, 'user@example.com')
ON CONFLICT (id) DO NOTHING;
Здесь мы явно говорим: "если произойдёт конфликт по
id
, ничего не делай". И PostgreSQL по умолчанию так и поступает.Поведение UPSERT при множественных уникальных индекса
Представьте, что в таблице есть не один, а два уникальных индекса:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT UNIQUE,
username TEXT UNIQUE
);
Теперь вы выполняете:
INSERT INTO users (email, username)
VALUES ('user@example.com', 'johnny');
А если
username = 'johnny'
уже существует, но email
ещё нет?Вставка завершится ошибкой!
Так происходит, потому что
ON CONFLICT
(email)
говорит PostgreSQL: «молчи, если конфликт по email
, но бросай ошибку, если конфликт по чему-то ещё».Чтобы избежать этого, используем:
ON CONFLICT DO NOTHING
Тогда PostgreSQL проигнорирует конфликт по любому индексу. Но это может спровоцировать проблемы, особенно при вставке пачкой
Как отладить такую ситуацию?
— Проверяйте
rowcount
после запроса. В Python/psycopg2, например:
cursor.execute(sql, values)
if cursor.rowcount == 0:
print("Nothing inserted!")
— Добавьте
RETURNING
и логируйте:
INSERT INTO users (email, username)
VALUES ('user@example.com', 'johnny')
ON CONFLICT DO NOTHING
RETURNING id;
Если возвращается пустой результат — значит, вставки не было.
— Логируйте причину. Если вы используете логику вида
DO UPDATE
, можно добавить логи в `UPDATE`-часть или сохранять «причину отказа» отдельно.#sql