Forwarded from PHP Academy
Media is too big
VIEW IN TELEGRAM
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 Injection минимум который должен знать каждый разработчик код которого работает в production
00:00 Вступление и оглавление
01:06 Определения (теория)
01:45 Чем опасны SQL Injection
03:34 Практический стенд
06:12 Обхода аутедентификации
09:23 Модификации базы данных
11:47 Защита с помощью placeholder
15:49 Защита там где placeholder не применимы
источник
@phpshka
👍8❤2🥰1
🔍 ScyllaDB в K8S: как справляться с интенсивными рабочими нагрузками на спотовых экземплярах без простоев
Почему не MongoDB?
Чем плоха Mongo?
• У нее открытый исходный код, поддерживается разделение данных, но совершенно иная архитектура — с единой точкой отказа. При «падении» главного узла, то есть координатора, в БД начинается отработка отказа, во время которого БД недоступна.
• Кроме того, для достижения высокой доступности каждый сегмент Mongo должен запускаться как набор реплик — больше узлов. Кольцевая архитектура Cassandra в этом смысле превосходнее. Драйвер Scylla «знает» о сегментах и добирается до конкретного узла/процессора, ответственного за запрашиваемую строку, делая распределение действительным.
• Но почему так важны отработка отказов без простоев и высокая доступность? На спотовых экземплярах — а это 1/4 стоимости вычислений — часто ежедневно случаются отработки отказов: узлы в k8s постоянно уничтожаются и воссоздаются, что чревато завершением всех запущенных в них подов/процессов, в том числе БД.
Установка Scylla
Сначала запустим локально, используя драйверы и что-нибудь на Cassandra Query Language:
Этой командой запустится одноузловой кластер Scylla. Так в режиме разработчика Scylla требуется минимум ресурсов в отличие от Cassandra, с которой у Docker Engine много работы.
Применение драйвера Scylla
Вот простой пример на Golang с использованием официального драйвера Scylla:
Здесь стоит обратить внимание вот на что:
Драйвером-клиентом TokenAware с помощью ключа раздела пробуется первый сегмент, затем методом циклического перебора — следующий, если первый недоступен. Для этого необходимо подключиться не к порту Cassandra по умолчанию 9042, а к порту Scylla с поддержкой сегментов 19042.
Попробуем простой запрос:
Переходим в облако
ПРОДОЛЖЕНИЕ
@sqlhub
Почему не 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
👍10❤1🔥1
Llama 2 - отличная модель, но она не очень хорошо справляется с преобразованием текста в SQL запросы.
Приходится прибегать к тонкой настройке 💡.
Вышла отличная библиотека для Llama 2 преобразования текста в SQL.
git clone https://github.com/run-llama/modal_finetune_sql.git
▪GIthub
▪Ipynb
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2
🟡 Дайджест полезных материалов из мира :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
Почитать:
— 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
👍11🔥4❤1
⚡Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
Машинное обучение: @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
Машинное обучение: @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
👍5
Полезная библиотека SQLModel для Python, которая упрощает взаимодействие с SQL базами данных.
С помощью SQLModel можно использовать Pydantic-подобные классы, использующие аннотации типов Python для повышения читаемости.
▪Github
▪Документация
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥1
Python-библиотека SQLLEX, которая позволяет эффективно и безопасно взаимодействовать с базами данных.
Если вы имели опыт работы с базами данных на Python, то, вероятно, испытывали трудности при написании SQL-запросов. Однако теперь нет необходимости бороться с этим. Больше никаких con.cursor() , ваш ждут удобные функции db.insert(), db.select().
Теперь ваш код будет более структурирован и понятен без магии SQL.
На github-е SQLLEX имеется подробная документация с обширным набором примеров кода, доступных в разделе wiki.
pip install sqllex
▪Github
▪Документация
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3🔥2👎1
💬 Регулярные выражения
Язык SQL поддерживает работу с регулярными выражениями (regular expressions или RegEx). Это специальный язык, позволяющий достаточно точно определить шаблоны поиска в строке.
Для работы с регулярными выражениями используется оператор SIMILAR TO вместо LIKE.
Вернемся к нашей задаче — нужно выбрать пользователей, чье имя начинается на 'A' и 'B'. Чтобы решить ее, нужно применить такой шаблон:
Разберем примененный шаблон [AB]%. В квадратных скобках перечисляются допустимые символы, а далее следует знакомый нам символ %. Этот запрос вернет пользователей с именами Abigale, Andy, Brayan, и так далее.
Представим, что нам нужно найти пользователей, у которых username заканчивается любой буквой.
Это можно сделать таким шаблоном: %[abcdefghijklmnopqrstuvwxyz]. Согласитесь, такая запись неудобна для чтения и записи.
А что, если мы случайно пропустим какую-то букву? В квадратных скобках можно использовать символ - для перечисления. Если записать в квадратных скобках начальный символ, поставить "-" и указать конечный символ, то такой шаблон вернет любой символ из диапазона от начального до конечного.
Напишем запрос, который вернет всех пользователей у которых username заканчивается любой буквой, будет выглядеть так:
Точно так же можно работать и с русскими буквами: '%[а-я]%'. Такой запрос поможет найти пользователей, у которых в поле username есть русские буквы:
Такой запрос вернет всех пользователей, чей username заканчивается на любую цифру.
Комбинируя правила, мы можем создавать достаточно сложные шаблоны. Например, проверим, что в поле email введены корректные адреса электронной почты.
Корректная почта должна содержать адрес, который состоит из:
*️⃣ Имени с любым количеством любых символов — например, my_email
*️⃣ Символа @
*️⃣ Домена с любым количеством любых символов — например, gmail
*️⃣ Точки
*️⃣ Указания национальной зоны — например, com
Запрос на поиск корректных адресов будет таким:
Такой запрос выведет имена пользователей с корректными адресами электронной почты, однако нам интереснее найти ошибки. В этом случае частица NOT позволит найти строки, которые не соответствуют шаблону:
Теперь выберем все адреса электронной почты, у которых национальная зона состоит ровно из двух символов — например, ru, su, io и так далее. При этом исключим зоны, состоящие из трех и более символов — например, com.
Это можно сделать так: %.[a-z][a-z]. Но удобнее воспользоваться еще одним спецсимволом — подчеркиванием _.
Символ подчеркивания обозначает ровно один любой символ, необязательно букву. Наш запрос будет выглядеть так:
Чтобы вывести пользователей с адресами электронной почты оканчивающимися на 3 символа, нужно добавить еще одно подчерктивание в наш шаблон:
Мы рассмотрели наиболее полезные и часто используемые возможности регулярных выражений в 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 введены корректные адреса электронной почты.
Корректная почта должна содержать адрес, который состоит из:
Запрос на поиск корректных адресов будет таким:
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥10❤5
🔍 Где искать работу Дата Саентисту?
Собрали для вас список площадок для поиска работы или фрланс-проекта в области 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
Собрали для вас список площадок для поиска работы или фрланс-проекта в области 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
Toptal
11 Best Freelance Data Scientists for Hire in June 2025 | Toptal®
Toptal offers top data scientists on an hourly, part-time, or full-time contract basis. Clients include Thumbtack, Bridgestone, and Motorola.
👍12❤7🔥3👏1
Крутой Python-пакет на базе ИИ для автоматической генерации SQL-запросов
Фреймворк позволяет создавать сложные SQL-запросы всего за несколько секунд. С Vanna вы можете легко и быстро получать данные из вашей базы данных, просто задавая вопросы
Инструмент может похвастаться высокой точностью на сложных наборах данных, безопасностью и конфиденциальностью, а также самообучением
Стоимость: #бесплатно (но есть платные функции)
#SQL #ИИ #базы_данных
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥4❤1
Ниже приведен список 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤1
SQL_Pandas.pdf
515.4 KB
🔥 Шпаргалка SQL → Pandas
— выбрать один столбец или несколько из них;
— фильтрация;
— выбор уникальных значений по столбцу;
— подсчет числа значений;
— перечисление названий столбцов и т.д.
@sqlhub
— выбрать один столбец или несколько из них;
— фильтрация;
— выбор уникальных значений по столбцу;
— подсчет числа значений;
— перечисление названий столбцов и т.д.
@sqlhub
👍14🔥2❤1
FugueSQL – SQL для Pandas, Spark и Dask DataFrames
Что такое FugueSQL?
FugueSQL – это библиотека Python, которая позволяет пользователям комбинировать код на языке Python и команды SQL. Это дает пользователям возможность гибко переключаться между Python и SQL в рамках Jupyter Notebook или Python-скрипта.
Чтобы установить FugueSQL, введите:
Для запуска на движках выполнения Spark или Dask введите:
В этой статье мы рассмотрим некоторые утилиты FugueSQL и сравним FugueSQL с другими инструментами, такими как pandasql.
В чем разница между FugueSQL и pandasql?
Если вы знакомы с pandasql, то у вас может возникнуть вопрос: Зачем использовать FugueSQL, если pandasql уже позволяет выполнять SQL с помощью pandas?
pandasql имеет единственный бэкэнд – SQLite. Передача данных между pandas и SQLite сопряжена с большими накладными расходами.
С другой стороны, FugueSQL поддерживает несколько локальных бэкендов: pandas, DuckDB и SQLite.
▪Читать
▪Github
@sqlhub
Что такое 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
👍9🔥3❤1👎1
✔ Зачем инструмент 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 нет ограничений, кроме возможностей самих хранилищ и уровня знаний исполнителя.
Установка
Открываем терминал.
▪Документация
▪Github
@sqlhub
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
❤7👍5🔥2
Этот замечательный, бесплатный курс дает пошаговое введение в создание приложений для работы с данными с использованием блокнотов Python, SQL и Jupyter. Он даже включает в себя введение в визуализацию с использованием plotly и других.
👉Читать курс
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍6❤1
Тип колонки 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;
Нюанс изменения 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5❤2
Асинхронное варение MongoDB в Python
Интересный доклад старшего разработчика компании Элитриум Даниила Неслуховского c недавней яндексовской конференции Pytup.
За эти 50 минут можно вспомнить типы БД, узнать про Object Mapping, Beanie и прочие компоненты.
Запись трансляции (доклад на 04:32)
#mongodb
Интересный доклад старшего разработчика компании Элитриум Даниила Неслуховского c недавней яндексовской конференции Pytup.
За эти 50 минут можно вспомнить типы БД, узнать про Object Mapping, Beanie и прочие компоненты.
Запись трансляции (доклад на 04:32)
#mongodb
👍9❤3🔥1
🔥Бесплатные сертификационные курсы для 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
🔰 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
👍23❤6🔥6