36043
По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo
🖥 Если бы я начал изучать SQL в 2023 году часть 2.
❯ Oracle http://mygreatlearning.com/academy/learn-for-free/courses/oracle-sql
❯ Big Query http://kaggle.com/learn/intro-to-sql
❯ PostgreSQL http://simplilearn.com/free-postgresql-course-skillup
❯ SQL Projects http://mygreatlearning.com/academy/learn-for-free/courses/sql-projects-for-beginners
@sqlhub
🖥 Если бы я начал изучать SQL в 2023 году.
🚀 БЕСПЛАТНЫЕ курсы и БЕСПЛАТНЫЕ сертификаты.
❯ SQL http://cognitiveclass.ai/courses/learn-sql-relational-databases
❯ MySQL https://scaler.com/topics/course/sql-using-mysql-course/
❯ PostgreSQL http://freecodecamp.org/learn/relational-database/
@sqlhub
🔥 Дайджест полезных материалов из мира : sql за неделю
Почитать:
— SONB и hstore: использование специальных типов данных PostgreSQL для работы с полуструктурированными данными
— Таблица-справочник – генератор DAG? А что так можно было?
— Какой парсер для автоматизации ревью кода лучше — DacFx или ANTLR
— Как полностью устранить дублирующие записи в ClickHouse
— Анализ сентимента и эмоционального окраса текстов с помощью SQL
— Почему тип поля enum на уровне базы — зло
— Использование конечных автоматов с несколькими активными состояниями для автоматизации бизнес-процессов
— Просто о Deep #1
— Как обучить миллионы моделей прогнозирования временными сериями
— How to simplify database operations using MySQL stored procedures
— Exploring the Basics of SQL: A Novice's Journey
— PL/Python on YugabyteDB
— Comprehensive Guide: Deploying and Debugging Custom Webhooks on Supabase & PostgreSQL
— Garanta a Eficiência: Escolhendo entre tipos String no SQL
— Nulls are equal in distinct but inequal in unique.
— Querying Your Data Easily and Smartly through Hugging Face
— How To Seamlessly Integrate Sequelize with Node.js and JavaScript for Database Monitoring
— Starting My First Command Line Project
— Entendendo JOINs no SQL: Unindo Tabelas Como um Profissional
Посмотреть:
🌐 Build SQL Scripts and Queries with Amazon CodeWhisperer | Amazon Web Services
🌐 Продвинутый парсинг на Python со сменой прокси (⏱ 10:27)
🌐 Уроки Golang с нуля /#25 - Интерфейсы (⏱ 10:51)
🌐 Многопоточный парсер на Python. ООП подход (⏱ 08:24)
Хорошего дня!
@sqlhub
Асинхронное варение MongoDB в Python
Интересный доклад старшего разработчика компании Элитриум Даниила Неслуховского c недавней яндексовской конференции Pytup.
За эти 50 минут можно вспомнить типы БД, узнать про Object Mapping, Beanie и прочие компоненты.
Запись трансляции (доклад на 04:32)
#mongodb
⚡️Почему тип поля enum на уровне базы — зло
Тип колонки enum используется для хранения данных, которые могут принимать определённые значения из заранее определённого набора.
Он обеспечивает ограничение значений, которые может принимать колонка, и позволяет более строго контролировать данные.
Это может быть полезно для хранения статусов, категорий, типов или любых других значений, которые могут быть заданы только из ограниченного набора вариантов.
А что на практике? Давайте рассмотрим.
Допустим у нас есть таблица со списком платежей, содержащая колонку status со следующими значениями:CREATE TABLE `payments`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`status` ENUM('new', 'progress', 'done', 'fauled') NOT NULL,
KEY(`id`)
) CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
▪️Через какое-то время была замечена грамматическая ошибка в слове "failed" и принято решение её исправить.
Нюанс изменения enum поля в том, что при его редактировании сбрасываются значения колонки в null для всех строк таблицы, а то и вовсе получим ошибку Data truncated for column 'status' at row 3. То есть, чтобы корректно изменить enum поле, нужно куда-то сохранить данные. План действий будет таков:
1. Создать новую enum колонку с правильным набором данных;
2. Скопировать значение из старой колонки в новую и сразу применить исправление значения;
3. Удалить старую enum колонку;
4. Переименовать новую enum колонку.
При использовании фреймворка Laravel это будет выглядеть следующим образом:use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
// Создаём новую колонку
Schema::table('payments', function (Blueprint $table) {
$table->enum('tmp_status', ['new', 'progress', 'done', 'failed']);
});
// Копируем значения из enum колонки в новую с корректировкой значения
DB::statement('UPDATE payments SET tmp_status = (IF status = \'fauled\' THEN \'failed\' ELSE status END IF)');
// Удаляем старую колонку
Schema::table('payments', function (Blueprint $table) {
$table->dropColumn('status');
});
// Переименовываем колонку
Schema::table('payments', function (Blueprint $table) {
$table->renameColumn('tmp_status', 'status');
});
}
};
На языке SQL эти действия будут выглядеть следующим образом:
📌 Читать далее
@sqlhub
✔ Зачем инструмент dbt нужен аналитику данных
dbt — open-source проект, который решает проблему организации данных и открывает много возможностей для их трансформации, обработкии моделирования.
dbt (Data Build Tool) — инструмент, который позволяет дата-инженерам и аналитикам автоматизировать процессы тестирования, внедрения, документирования в рамках трансформации данных. Проще говоря, dbt — это всё о букве T в акрониме ELT (Extract — Transform — Load). Этот фреймворк не выгружает данные из источников, но предоставляет огромные возможности по работе с теми данными, которые уже загружены в Хранилище (в Internal или External Storage).
dbt основан на языках SQL и Jinja, с версии 1.4.* также поддерживает Python.
Основное назначение dbt — взять код, скомпилировать его в SQL, выполнить команды в правильной последовательности в хранилище
Чем полезен фреймворк
▪Контроль качества. Для бизнеса важно получать качественные данные, а для этого, в свою очередь, нужны инструменты контроля качества. dbt как инструмент позволяет реализовать любые вариации тестирования: на этапе обновления каких-либо данных мы всегда можем собрать быструю статистику по любым метрикам.
▪Хранение данных. Даже из «коробки» этот фреймворк позволяет реализовать на уровне хранилища хранение данных с историей СКД-2 (хранения технической истории, изменение атрибутов). С ним можно выстраивать снэпшоты — детальные слои с историей данных. dbt помогает собрать любую историю данных, чтобы отвечать на вопросы аналитиков и бизнеса.
▪Связывание данных в единую цепочку. Инструмент описывает ациклические зависимости (DAG) и связи, что позволяет легко анализировать цепочку преобразований данных. Когда мы используем и переиспользуем данные, выполнение этих задач связано: если что-то где-то меняется, то сказывается на других сущностях. С помощью dbt мы решаем задачу консистентности данных — устраиваем зависимость выполнения, чтобы одна сущность была рассчитана только после другой, без задержек и потери актуальности данных. Фреймворк помогает собрать в одном месте и связать всю логику — от исходных данных до итоговых результатов и их переиспользования.
▪Перенос в другие среды. Фреймворк позволяет легко переносить и настраивать разные подходы к работе моделей в различных средах: тестовые модели, продуктовый уровень, промышленный слой.
▪Настройка дополнительных возможностей. С dbt можно вписать документацию данных и работать с ними, можно настроить логирование стандартными способами и отслеживать аналитику исполнения запросов. Всё это реализуемо, поскольку у фреймворка на основе SQL и Jinja нет ограничений, кроме возможностей самих хранилищ и уровня знаний исполнителя.
Установка
Открываем терминал.Запускаем команды:
pip install dbt-core #Установка
последней версии;
pip install dbt-core==1.4.0
#Установка конкретной версии.
dbt —version #Проверка установленной
версии.
▪Документация
▪Github
@sqlhub
🔥 Шпаргалка SQL → Pandas
— выбрать один столбец или несколько из них;
— фильтрация;
— выбор уникальных значений по столбцу;
— подсчет числа значений;
— перечисление названий столбцов и т.д.
@sqlhub
🖥 Vanna
Крутой Python-пакет на базе ИИ для автоматической генерации SQL-запросов
Фреймворк позволяет создавать сложные SQL-запросы всего за несколько секунд. С Vanna вы можете легко и быстро получать данные из вашей базы данных, просто задавая вопросы
Инструмент может похвастаться высокой точностью на сложных наборах данных, безопасностью и конфиденциальностью, а также самообучением
Стоимость: #бесплатно (но есть платные функции)
#SQL #ИИ #базы_данных
@sqlhub
💬 Регулярные выражения
Язык SQL поддерживает работу с регулярными выражениями (regular expressions или RegEx). Это специальный язык, позволяющий достаточно точно определить шаблоны поиска в строке.
Для работы с регулярными выражениями используется оператор SIMILAR TO вместо LIKE.
Вернемся к нашей задаче — нужно выбрать пользователей, чье имя начинается на 'A' и 'B'. Чтобы решить ее, нужно применить такой шаблон:SELECT * FROM users WHERE first_name SIMILAR TO '[AB]%';
Разберем примененный шаблон [AB]%. В квадратных скобках перечисляются допустимые символы, а далее следует знакомый нам символ %. Этот запрос вернет пользователей с именами Abigale, Andy, Brayan, и так далее.
Представим, что нам нужно найти пользователей, у которых username заканчивается любой буквой.
Это можно сделать таким шаблоном: %[abcdefghijklmnopqrstuvwxyz]. Согласитесь, такая запись неудобна для чтения и записи.
А что, если мы случайно пропустим какую-то букву? В квадратных скобках можно использовать символ - для перечисления. Если записать в квадратных скобках начальный символ, поставить "-" и указать конечный символ, то такой шаблон вернет любой символ из диапазона от начального до конечного.
Напишем запрос, который вернет всех пользователей у которых username заканчивается любой буквой, будет выглядеть так:SELECT * FROM users WHERE username SIMILAR TO '%[a-z]';
Точно так же можно работать и с русскими буквами: '%[а-я]%'. Такой запрос поможет найти пользователей, у которых в поле username есть русские буквы:SELECT * FROM users WHERE username SIMILAR TO '%[а-я]%';
Чтобы выбрать все цифры, используем шаблон [0-9]:
SELECT * FROM users WHERE username SIMILAR TO '%[0-9]';
Такой запрос вернет всех пользователей, чей username заканчивается на любую цифру.
Комбинируя правила, мы можем создавать достаточно сложные шаблоны. Например, проверим, что в поле email введены корректные адреса электронной почты.
Корректная почта должна содержать адрес, который состоит из:
*️⃣Имени с любым количеством любых символов — например, my_email
*️⃣Символа @
*️⃣Домена с любым количеством любых символов — например, gmail
*️⃣Точки
*️⃣Указания национальной зоны — например, com
Запрос на поиск корректных адресов будет таким:SELECT username, email FROM users WHERE email SIMILAR TO '%@%.%';
Такой запрос выведет имена пользователей с корректными адресами электронной почты, однако нам интереснее найти ошибки. В этом случае частица NOT позволит найти строки, которые не соответствуют шаблону:SELECT username, email FROM users WHERE email NOT SIMILAR TO '%@%.%';
Теперь выберем все адреса электронной почты, у которых национальная зона состоит ровно из двух символов — например, ru, su, io и так далее. При этом исключим зоны, состоящие из трех и более символов — например, com.
Это можно сделать так: %.[a-z][a-z]. Но удобнее воспользоваться еще одним спецсимволом — подчеркиванием _.
Символ подчеркивания обозначает ровно один любой символ, необязательно букву. Наш запрос будет выглядеть так:SELECT username, email FROM users WHERE email SIMILAR TO '%.__';
Чтобы вывести пользователей с адресами электронной почты оканчивающимися на 3 символа, нужно добавить еще одно подчерктивание в наш шаблон:SELECT
username,
email
FROM users WHERE email SIMILAR TO '%.___';
Мы рассмотрели наиболее полезные и часто используемые возможности регулярных выражений в SQL, но они ими не ограничиваются.
@sqlhub
🖥SQLModel
Полезная библиотека SQLModel для Python, которая упрощает взаимодействие с SQL базами данных.
С помощью SQLModel можно использовать Pydantic-подобные классы, использующие аннотации типов Python для повышения читаемости.
▪Github
▪Документация
@sqlhub
🟡 Дайджест полезных материалов из мира :sql за неделю
Почитать:
— PDM и почему он вечно тормозит
— Объяснения по шардинга баз данных
— Высокодоступный MySQL на конвейере
— Топ-5 инструментов для GitHub 2024
— Оптимизация SQL-запросов в Oracle
— Navigating Databases with Python: A Beginner-Friendly Guide
— A Guide to Backup and Recovery of SQL Azure Database
— GROUP BY clause in PostgreSQL
— 8 Completely FREE Big Data Resources
— Oracle to PostgreSQL code migration pain
— Serve Less, Logic Less
— Gérer des clés étrangères avec SQLite
— SQL Data Types: A Comprehensive Overview
— A Powerful Tool for Data Engineers: Apache Doris 2.0.0 is Production-Ready!
— Transaction Isolation Levels and why we should care
Посмотреть:
🌐 SQL Full Course 2023 | SQL For Beginners | MySQL Full Course
🌐 План обучения SQL на 30 дней C НУЛЯ
Хорошего дня!
@sqlhub
PeerDB — упрощённое ETL для Postgres
Полезный инструмент, который помогает реализовать быстрое перемещение данных из и в вашу базу данных Postgres
Он помогает дата саентистам создавать масштабируемые конвейеры легко и быстро, используя SQL
PeerDB предоставляет реальное время CDC (изменение захвата данных) с гарантией свежести данных менее 30 секунд на целевом устройстве
Это бесплатный инструмент (но есть платные тарифы).
#Postgres #БД #db
@sqlhub
PHP, PDO SQL Injection
SQL Injection минимум который должен знать каждый разработчик код которого работает в production
00:00 Вступление и оглавление
01:06 Определения (теория)
01:45 Чем опасны SQL Injection
03:34 Практический стенд
06:12 Обхода аутедентификации
09:23 Модификации базы данных
11:47 Защита с помощью placeholder
15:49 Защита там где placeholder не применимы
источник
@phpshka
🔥Большая подборка бесплатных SQL курсов.
▪ Интерактивный тренажер по SQL (— практические задания на создание SQL-запросов. Каждый шаг включает минимальные теоретические аспекты по базам данных или языку SQL, примеры похожих запросов и пояснение к реализации
▪ Марафон данных: первое знакомство с SQL и Python — это симулятор профессии дата-аналитика, который познакомит вас с базами данных и методами работы с ними
▪ Знакомство с SQLite (4.6 из 5) — этот небольшой курс покажет, как использовать SQLite в повседневной работе. Вы научитесь загружать, анализировать и выгружать данные, а также познакомитесь с разными типами данных
▪ Введение в базы данных - курс посвящен структурированному хранению данных, основами SQL, принципами использования баз данных в приложениях, обзор нереляционных способов хранения данных
▪ Погружение в СУБД — курс для тех, кто уже имеет некоторый опыт проектирования баз данных и разработки приложений и хочет расширить свои знания
🌐 Youtube
▪ Реляционные базы данных. SQL (39 видео) — курс раскрывает все аспекты реляционных баз данных, начиная от определения и создания баз данных, схем, таблиц и полей этих таблиц (DDL), и заканчивая запросами к этим таблицам (DML)
▪ Практика по SQL
▪ Основы SQL (18 видео) — объясняют базовые концепции языка: операторы, фильтрация, сортировка, группировка, декомпозиция и т. д.
▪ Уроки по SQL для начинающих (25 видео) — эти уроки помогут быстро разобраться с основами
12 Англоязычных курсов
Платформы: Stepik, Coursera, Udacity, Udemy и Kaggle.
1. Databases and SQL for Data Science with Python
2. SQL for Data Science
3. Introduction to Databases and SQL Querying
4. Intro to Relational Databases
5. Introduction to Structured Query Language (SQL)
6. Advanced Databases and SQL Querying
7. SQL for Data Analysis
8. Oracle SQL – A Complete Introduction
9. Intro to SQL
10. Advanced SQL
11. Oracle SQL Basics
12. Beginners Guide to SQL
👍 Лайк, если полезно
@Sqlhub
Распределенный SQL: Альтернатива шардированию баз данных
Шардирование баз данных — это процесс разделения данных на более мелкие части, называемые «шарды». Шардинг обычно используется, когда необходимо масштабировать записи. Распределенный SQL представляет новый способ масштабирования реляционных баз данных с использованием стратегии сегментирования, полностью автоматизированной и прозрачной для приложений. Подробнее ты узнаешь из этой статьи.
🚀 Читать статью
@sqlhub
👨🏻💻 Системный аналитик в Росбанк
Системообразующий банк ищет Системного аналитика в свою команду.
Что предлагают:
— Конкурентная зарплата;
— Удаленная работа;
— ДМС со стоматологией и ветуслугами;
— Возможность развиваться в роли эксперта и бесплатно обучаться по выбранному треку;
— Быть частью профессионального сообщества, в котором эксперты обмениваются опытом и помогают вам развиваться.
Контакт для связи: @daryabil
🖥 Termdbms
Удобный инструмент для просмотра и редактирования файлов базы данных(SQLite, CSV), написанный на Go.
▪Позволяет перемещаться по таблицам с любым количеством столбцов
▪Позволяет перемещаться по таблицам с любым количеством строк
▪Запускает SQL-запросы и отображайте результаты
▪Позволяет сохранять SQL-запросы в буфер обмена
▪Обновление, удаление или вставка с помощью SQL, с поддержкой отмены / повтора для SQLite
▪Работает с клавиатурой и мышью.
▪Автоматическое форматирование JSON в режиме выбора / форматирования
▪Позволяет редактировать многострочный текст с помощью элементов управления, подобных vim
▪Отмена / возврат изменений (только SQLite)
▪Темы (нажмите T в режиме таблицы)
▪Вывод результатов запроса в формате CSV
▪Конвертируйте .csv в базу данных SQLite! Экспортируйте снова как базу данных SQLite или файл .csv!
📌Github
@sqlhub
🔥Бесплатные сертификационные курсы для Data Science в 2023 году.
🔰 SQL
http://online.stanford.edu/courses/soe-ydatabases0005-databases-relational-databases-and-sql
🔰 Python
http://cs50.harvard.edu/python/2022/
🔰Statistics and R
https://edx.org/learn/r-programming/harvard-university-statistics-and-r
🔰Data Science: R Basics
https://edx.org/learn/r-programming/harvard-university-data-science-r-basics
🔰 Excel and PowerBI
http://learn.microsoft.com/en-gb/training/paths/modern-analytics/
🔰Data Science: Visualization
https://edx.org/learn/data-visualization/harvard-university-data-science-visualization
🔰Data Science: Machine Learning
https://edx.org/learn/machine-learning/harvard-university-data-science-machine-learning
🔰 R
http://cognitiveclass.ai/courses/r-101
🔰 Tableau
http://tableau.com/learn/training
🔰 PowerBI
http://learn.microsoft.com/en-us/users/collinschedler-0717/collections/m14nt4rdwnwp04
🔰Data Science: Productivity Tools
https://edx.org/learn/data-science/harvard-university-data-science-productivity-tools
🔰Data Science: Probability
https://edx.org/learn/probability/harvard-university-data-science-probability
🔰 Mathematics
http://ocw.mit.edu/search/?d=Mathematics&s=department_course_numbers.sort_coursenum
🔰 Statistics
http://cognitiveclass.ai/courses/statistics-101
🔰 Data Visualization
http://pll.harvard.edu/course/data-science-visualization
🔰 Machine Learning
http://developers.google.com/machine-learning/crash-course
🔰 Deep Learning
http://introtodeeplearning.com
🔰Data Science: Linear Regression
https://pll.harvard.edu/course/data-science-linear-regression/2023-10
🔰Data Science: Wrangling
https://edx.org/learn/data-science/harvard-university-data-science-wrangling
🔰 Linear Algebra
http://pll.harvard.edu/course/data-analysis-life-sciences-2-introduction-linear-models-and-matrix-algebra
🔰 Probability
http://pll.harvard.edu/course/data-science-probability
🔰Introduction to Linear Models and Matrix Algebra
https://edx.org/learn/linear-algebra/harvard-university-introduction-to-linear-models-and-matrix-algebra
🔰Data Science: Capstone
https://edx.org/learn/data-science/harvard-university-data-science-capstone
🔰 Data Analysis
http://pll.harvard.edu/course/data-analysis-life-sciences-4-high-dimensional-data-analysis
@sqlhub
🖥 SQLGlot
SQLGlot - это парсер, транспилятор, оптимизатор и для SQL. Он может использоваться для форматирования SQL или трансляции между 20 различными диалектами, такими как DuckDB, Presto, Spark, Snowflake и BigQuery. х.pip3 install sqlglot
▪Github
@sqlhub
🖥Комплексные приложения для работы с данными с SQL и Jupyter
Этот замечательный, бесплатный курс дает пошаговое введение в создание приложений для работы с данными с использованием блокнотов Python, SQL и Jupyter. Он даже включает в себя введение в визуализацию с использованием plotly и других.
👉Читать курс
@sqlhub
FugueSQL – SQL для Pandas, Spark и Dask DataFrames
Что такое FugueSQL?
FugueSQL – это библиотека Python, которая позволяет пользователям комбинировать код на языке Python и команды SQL. Это дает пользователям возможность гибко переключаться между Python и SQL в рамках Jupyter Notebook или Python-скрипта.
Чтобы установить FugueSQL, введите:pip install fugue[sql]
Для запуска на движках выполнения Spark или Dask введите:pip install fugue[sql, spark]
pip install fugue[sql, dask]
pip install fugue[all]
В этой статье мы рассмотрим некоторые утилиты FugueSQL и сравним FugueSQL с другими инструментами, такими как pandasql.
В чем разница между FugueSQL и pandasql?
Если вы знакомы с pandasql, то у вас может возникнуть вопрос: Зачем использовать FugueSQL, если pandasql уже позволяет выполнять SQL с помощью pandas?
pandasql имеет единственный бэкэнд – SQLite. Передача данных между pandas и SQLite сопряжена с большими накладными расходами.
С другой стороны, FugueSQL поддерживает несколько локальных бэкендов: pandas, DuckDB и SQLite.from fugue.api import fugue_sql
import json
query = """
SELECT id, value
FROM input_df
TRANSFORM USING map_letter_to_food(mapping={{mapping}}) SCHEMA *
"""
map_dict_str = json.dumps(map_dict)
# returns Pandas DataFrame
fugue_sql(query,mapping=map_dict_str)
# returns Spark DataFrame
fugue_sql(query, mapping=map_dict_str, engine="spark")
▪Читать
▪Github
@sqlhub
🖥 Пакеты драйверов для баз данных на языке Python
Ниже приведен список Python-библиотек драйверов для различных баз данных, полезный любому программисту, который интересуется этим языком.
▪redis-py — клиент базы данных Redis на Python
redis-py 3.5.x — это последняя версия, которая поддерживала Python 2. Обновления безопасности, совместимые с Python 2, выходили вплоть до 20 августа 2020 года. Для redis-py 4.0, следующей основной версии, уже требуется Python не ниже версии 3.5.
▪PyMySQL — драйвер Pure Python MySQL, совместимый с mysql-python
Этот пакет содержит клиентскую библиотеку Python MySQL, основанную на стандарте PEP 249.
Большинство открытых API-интерфейсов совместимы с mysqlclient и MySQLdb.
ЗАМЕЧАНИЕ: PyMySQL не поддерживает низкоуровневые API-запросы, которые есть в _mysql, а именно data_seek, store_result и use_result. Вы должны использовать высокоуровневые API-запросы, определенные в стандарте PEP 249. Но некоторые API-запросы, такие как autocommit и ping, все же поддерживаются, поскольку PEP 249 никак не регламентирует их применение.
▪asyncpg — быстрая клиентская библиотека Python / asyncio для базы данных PostgreSQL
Это библиотека интерфейса базы данных, разработанная специально для PostgreSQL и Python / asyncio.
asyncpg — это эффективная и чистая реализация бинарного протокола сервера баз данных PostgreSQL для использования с асинхронным фреймворком Python asyncio. Вы можете узнать больше об asyncpg вот здесь.
asyncpg требует Python версии 3.5 или новее и поддерживается для PostgreSQL начиная с версии 9.2 и заканчивая версией 12.
▪psycopg2 — самый популярный адаптер PostgreSQL для Python
Psycopg — самый популярный адаптер базы данных PostgreSQL для языка программирования Python. Его основными особенностями являются полная реализация спецификации Python DB API 2.0 и безопасность потоков (несколько потоков могут использовать одно и то же соединение). Он был разработан для многопоточных приложений, которые создают и уничтожают множество связей и выполняют большое количество одновременных операций INSERT или UPDATE.
▪mysqlclient — поддерживающий Python 3 форк библиотеки mysql-python
В этом проекте добавлена поддержка Python 3 и исправлен ряд ошибок. Мы надеемся, что этот форк будет снова объединен со своей родительской библиотекой. Это было бы так же логично, как объединение дистрибутива и программы для его установки.
▪cassandra-python-driver — драйвер Python для Cassandra
Современная, многофункциональная и гибконастраиваемая клиентская библиотека Python для Apache Cassandra (1.2+) и DataStax Enterprise (3.1+). Она использует исключительно бинарный протокол Cassandra и язык запросов Cassandra Query Language v3.
▪motor — аснхронный драйвер Python для MongoDB
Motor — это полнофункциональный драйвер MongoDB для Python Tornado и других асинхронных приложений.
▪pymssql — простой интерфейс для Microsoft SQL Server
Простой интерфейс баз данных на языке Python, который строится поверх FreeTDS и предоставляет интерфейс Python DB-API (PEP-249) для Microsoft SQL Server.
▪HappyBase — удобная библиотека для Apache HBase
▪PyMongo — официальный клиент Python для MongoDB
▪SuperSQLite — улучшенная библиотека SQLite
Это многофункциональная библиотека Python, предназначенная для использования SQLite в Python компанией Plasticity. Построена она на основе apsw.
@sqlhub
🔍 Где искать работу Дата Саентисту?
Собрали для вас список площадок для поиска работы или фрланс-проекта в области Data Science.
1. Toptal
Toptal - один из крупнейших фриланс сайтов для специалистов по анализу данных. В отличие от многих других бирж фриланса в Toptal соискатели проходят тестирование в различных областях, включая знание английского языка и технические навыки, в области SQL и Python для data science.
2. Open Data Science Jobs
Open Data Science Jobs - одна из крупнейших площадок вакансий, посвященных только науке о данных. Такие компании, как Bose, использовали эту доску объявлений для поиска специалистов по науке о данных для оптимизации своей бизнес-аналитики.
3. Kaggle
Kaggle - одно из крупнейших сообществ датасаентистов. Kaggle предоставляет наборы данных, проводит соревнования и вообще способствует процветанию сообщества специалистов по анализу данных.
Доска вакансий Kaggle - один из лучших вариантов для начала поиска проекта для рабрты. Ее услугами пользуются крупнейшие компании (Amazon, Capital One и AIG и тд).
4. Scalable Path
Если у вас есть готовая команда датасаентистов и вы хотите найти интерсный проект , Scalable Path - отличный вариант.
5. Gigster
Еще одина крупная фриланс площадка с проектами ds.
6. iCrunchData - это доска объявлений c вакансиями в области науки о данных.
7. X-Team
X-Team - рынок фриланса, где можно работать, как одному, так и в команде.
8. Gun.io
Gun.io очень похож на Toptal, быстро и эффективно подбирая для компаний квалифицированных инженеров по науке о данных. С тысячами зарегистрированных членов Gun.io является восходящей звездой в индустрии фриаланса.
9. R-users
Простой поиск по сайту R-users позволяет найти десятки вакансий в области науки о данных, в которых используется язык программирования R.
10. AngelList
AngelList - это место, где встречаются ит- предприниматели и инвесторы.
11. Engineering Jobs
Если вы ищете ds проект Engineering Jobs может стать отличным местом для поиска интересной работы.
12. Dice
Dice - доскоа объявлений о карьере в сфере технологий и ИТ. Эта доска известна тем, что привлекает архитекторов программного обеспечения, инженеров, QA-тестеров и инженеров по анализу данных.
13. SimplyHired
SimplyHired - это еще одна крупная доска объявлений о работе, похожая на Indeed или Monster.
14. Папка с каналами для поиска работы в телеграме.
Телеграм каналы и чаты, где публикуются вакансии ds, python и не только. Очень полезная папка (папки поддерживаются только в последних версиях тг), где можно найти вакансию на любой ЯП.
Ставьте 👍 , если полезно.
@sqlhub
🖥 SQLLEX ORM v0.3.0
Python-библиотека SQLLEX, которая позволяет эффективно и безопасно взаимодействовать с базами данных.
Если вы имели опыт работы с базами данных на Python, то, вероятно, испытывали трудности при написании SQL-запросов. Однако теперь нет необходимости бороться с этим. Больше никаких con.cursor() , ваш ждут удобные функции db.insert(), db.select().
Теперь ваш код будет более структурирован и понятен без магии SQL.
На github-е SQLLEX имеется подробная документация с обширным набором примеров кода, доступных в разделе wiki.pip install sqllex
▪Github
▪Документация
@sqlhub
⚡Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
Машинное обучение: @ai_machinelearning_big_data
Go: @Golang_google
C#: @csharp_ci
Базы данных: sql
Python: @python_job_interview
C/C++/: @cpluspluc
Data Science: @data_analysis_ml
Devops: @devOPSitsec
Rust: @rust_code
Javascript: @javascriptv
React: @react_tg
PHP: @phpshka
Docker: @docker
Android: @android_its
Мобильная разработка: @mobdevelop
Linux: linuxacademy
Big Data: t.me/bigdatai
Хакинг: @linuxkalii
Java:@javatg
Собеседования: @machinelearning_interview
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
🔥ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: @english_forprogrammers
🖥 Finetuning LLaMa + Text-to-SQL
Llama 2 - отличная модель, но она не очень хорошо справляется с преобразованием текста в SQL запросы.
Приходится прибегать к тонкой настройке 💡.
Вышла отличная библиотека для Llama 2 преобразования текста в SQL.git clone https://github.com/run-llama/modal_finetune_sql.git
▪GIthub
▪Ipynb
@sqlhub
🔍 ScyllaDB в K8S: как справляться с интенсивными рабочими нагрузками на спотовых экземплярах без простоев
Почему не MongoDB?
Чем плоха Mongo?
• У нее открытый исходный код, поддерживается разделение данных, но совершенно иная архитектура — с единой точкой отказа. При «падении» главного узла, то есть координатора, в БД начинается отработка отказа, во время которого БД недоступна.
• Кроме того, для достижения высокой доступности каждый сегмент Mongo должен запускаться как набор реплик — больше узлов. Кольцевая архитектура Cassandra в этом смысле превосходнее. Драйвер Scylla «знает» о сегментах и добирается до конкретного узла/процессора, ответственного за запрашиваемую строку, делая распределение действительным.
• Но почему так важны отработка отказов без простоев и высокая доступность? На спотовых экземплярах — а это 1/4 стоимости вычислений — часто ежедневно случаются отработки отказов: узлы в k8s постоянно уничтожаются и воссоздаются, что чревато завершением всех запущенных в них подов/процессов, в том числе БД.
Установка Scylla
Сначала запустим локально, используя драйверы и что-нибудь на Cassandra Query Language:docker run -p 9042:9042 -p 7002:7000 -p 7001:7001 -p 9160:9160 -p 9180:9180 --name scylla --hostname scylla -d scylladb/scylla --smp 1 --developer-mode 1
Этой командой запустится одноузловой кластер Scylla. Так в режиме разработчика Scylla требуется минимум ресурсов в отличие от Cassandra, с которой у Docker Engine много работы.
Применение драйвера Scylla
Вот простой пример на Golang с использованием официального драйвера Scylla:import "github.com/gocql/gocql"
func Connect(config Config) (*gocql.Session, error) {
cluster := gocql.NewCluster(config.Hosts...)
cluster.Keyspace = config.KeySpace
cluster.CQLVersion = "3.11"
cluster.RetryPolicy = &gocql.ExponentialBackoffRetryPolicy{
NumRetries: 5, Min: time.Millisecond * 5, Max: time.Second * 5}
cluster.ProtoVersion = 3
cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())
cluster.ConnectTimeout = time.Second * 10
cluster.Consistency = gocql.One
if config.Timeout != nil {
cluster.Timeout = *config.Timeout
}
cluster.Authenticator = gocql.PasswordAuthenticator{
Username: config.Username, //'cassandra' по умолчанию
Password: config.Password, //'cassandra' по умолчанию
}
session, err := cluster.CreateSession()
if err != nil {
return nil, err
}
return session, nil
}
Здесь стоит обратить внимание вот на что:cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())
Драйвером-клиентом TokenAware с помощью ключа раздела пробуется первый сегмент, затем методом циклического перебора — следующий, если первый недоступен. Для этого необходимо подключиться не к порту Cassandra по умолчанию 9042, а к порту Scylla с поддержкой сегментов 19042.
Попробуем простой запрос:func Ping(session *gocql.Session) error {
var str = new(string)
if err := session.Query("SELECT uuid() FROM system.local;").Scan(str); err != nil {
return err
}
if str == nil || len(*str) == 0 {
return errors.New("failed sanity check")
}
return nil
}
// альтернатива «select 1;» в SQL
Переходим в облако
ПРОДОЛЖЕНИЕ
@sqlhub
Сочетание DuckDB и PyArrow позволяет эффективно обрабатывать на одной машине массивы данных, превышающие объем памяти.
В приведенном ниже коде запуск DuckDB на наборе данных #PyArrow примерно в 2906 раз быстрее, чем запуск #DuckDB на #pandas DataFrame.
▪Pyarrow
▪DuckDB
#tips
@sqlhub
🖥 Relational Databases Explained
Принцип работы реляционных баз данных. В этой статье рассказывается о том, как работают индексы и транзакции внутри реляционных баз данных.
Отличная иллюстрированная статья для глубокого понимания реляционных баз данных.
▪Читать
@sqlhub
🖥 Postgres, MongoDB и MySQL - три наиболее известные и широко используемые базы данных, причем Postgres является самой популярной.
Redis и Planetscale - лучшие варианты при запуске нового проекта. Более подробная информация и интересные статистические данные приведены в полном тексте отчета.
📌Читать
@sqlhub