SQLite на практике
Все о работе с данными в sqlite // antonz.ru
Show more2 169
Subscribers
No data24 hours
+17 days
+1430 days
- Subscribers
- Post coverage
- ER - engagement ratio
Data loading in progress...
Subscriber growth rate
Data loading in progress...
Побег из карантина macOS и точный путь к расширению
Свежий релиз
sqlpkg
принес две приятные фичи:
— Команда install
автоматически убирает расширение из карантина macOS, чтобы можно было использовать без дополнительных приседаний.
— Команда which
печатает точный путь к установленному расширению, чтобы было проще загрузить его в SQLite.
https://github.com/nalgeon/sqlpkg-cli/releases/0.2.0Перенести SQLite-расширения с одной машины на другую
Начиная с релиза 0.1.0,
sqlpkg
сохраняет информацию об установленных пакетах в специальном файле (sqlpkg.lock
, он же локфайл).
Используйте его, чтобы установить расширения на новой машине одной командой:
sqlpkg installhttps://github.com/nalgeon/sqlpkg-cli/releases/0.1.0
SQL-файлы в песочнице
Когда я запустил Sqlime, как-то забыл поддержать загрузку из
.sql
файлов. Песочница умела загружать бинарные SQLite-базы из локального файла или по урлу, GitHub-гисты, но не sql-файлы.
Наверно я полагал, что люди в основном будут копипастить SQL руками, так что файлы им не нужны. Возможно, не так уж и ошибался — никто не попросил эту возможность.
Но все же странновато для SQL-песочницы не уметь загружать SQL-файлы. Так что теперь она умеет ツ
Заодно обновил иконки. Использовал svgrepo.com — опенсорсный репозиторий иконок, очень рекомендую.Photo unavailableShow in Telegram
Одна из моих любимых мелких штук в Sqlime — возможность выделить и запустить фрагмент запроса. Полезно, когда «распутываешь» сложный запрос.
К тому же, ее было несложно реализовать. Ах, если бы все фичи были такими 🙂
Photo unavailableShow in Telegram
Для начала добавил в реестр те расширения, которые пробовал сам, получилось около 60 пакетов
Реестр и менеджер пакетов для SQLite
Расширений для SQLite становится все больше, и я решил, что пришло время сделать менеджер пакетов!
Встречайте sqlpkg - это одновременно реестр пакетов с веб-интерфейсом и консольный менеджер пакетов. Надеюсь, вам пригодится.
https://sqlpkg.org/
Реестр пакетов работает отдельно от менеджера и не требует его. Достаточно найти нужный пакет на сайте, скачать под свою ОС и загрузить стандартными средствами (.load или load_extension).
А менеджер пакетов работает отдельно от реестра и тоже не требует его :) Чтобы установить пакет, достаточно указать менеджеру на файл спецификации. Его можно захостить где угодно или даже разместить локально.
Photo unavailableShow in Telegram
Удобно отлаживать небольшие запросики, а для обучения так и вовсе незаменимая штука
Больше функций в SQL-песочнице
Sqlime — это опенсорсная SQLite-песочница в браузере.
В ней всегда были стандартные функции SQLite: общего назначения, дата-время и математические.
А теперь есть намного больше, от регулярных выражений и матстатистики до динамического SQL!
По сути, я приделал к песочнице все свои расширения, которые до этого подключались только к «обычному» SQLite (кроме работы с файлами и юникода, который под веб не захотел компилироваться).
https://sqlime.org/
Photo unavailableShow in Telegram
sqlite3 + расширения на Python
Сделал Python-пакет
sqlean.py
. Он полностью совместим со стандартным sqlite3
, плюс добавляет множество приятных функций:
— кодирование/декодирование
— динамический SQL
— работа с файлами
— текстовые функции
— IP адреса
— мат. статистика
— UUID
— CSV
https://github.com/nalgeon/sqlean.pyПокрывающий индекс в SQL
Покрывающий индекс — самый быстрый способ выбрать данные из таблицы.
Например, есть запрос, который выбирает сотрудников с указанной зарплатой:
select id, name from employees where salary = 90;Если нет индекса, он обходит всю таблицу (так называемый фулскан). Создадим индекс по зарплате:
create index employees_idx on employees(salary);Теперь тот же запрос будет находить записи по зарплате в индексе (это быстрее, чем обходить всю таблицу). И для каждой найденной записи будет обращаться к таблице, чтобы получить значения id и name. Но если создать покрывающий индекс:
create index employees_idx on employees(salary, id, name);То запрос будет отрабатывать только по индексу, вообще без обращения к таблице. Это еще быстрее. Покрывающие индексы дорого обходятся при изменении данных в таблице, поэтому на каждый вид запросов их создавать не стоит. Чаще это одно из последних средств оптимизации, когда все остальное уже сделали.
Choose a Different Plan
Your current plan allows analytics for only 5 channels. To get more, please choose a different plan.