Категория: Руководства
SQLite Expert Personal — удобная утилита для создания и управления несколькими базами данных SQLite3 с простым интерфейсом и возможностью редактирования таблиц, а также выполнения запросов и сценариев. Программа пригодится как при создании новых баз данных, так и при построении и редактировании сложных запросов SQL. В главном окне отображаются все подключенные базы и там же можно выполнять собственные сценарии при помощи Query Builder. Вы можете легко изменять все поля, внешние ключи, индексы, ограничения и триггеры.
При первом запуске программа выберет псевдоним (Alias) базы данных по умолчанию, затем вы можете изменить его по своему усмотрению или открыть существующую БД в меню «Файл». После этого вы можете просматривать и редактировать все таблицы, выбирая их в панели с древовидной структурой находящейся слева. Кроме того, SQLite Expert предоставляет пользователю возможность проиндексировать все таблицы или импортировать/экспортировать данные в другие форматы.
Главные отличия от версии SQLite Expert Professional в том, что эта версия полностью бесплатна для любого использования, но обладает слегка ограниченным функционалом (в Pro-версии более широки возможности работы с функциями SQLite).
Ключевые особенности и функцииТеперь выучим несколько команд для командной строки, которые пригодятся для автоматизации рутинных операций.
Если вы находитесь внутри оболочки sqlite3, то сначала нужно выйти из неё с помощью команды .exit .
Сделать дамп базы данных можно командой:
Лучше дамп сохранить в файле:
Теперь файл test.sql содержит все записи базы данных в читаемом виде. Выбрать все записи для таблицы test можно так:
Для создания новой базы данных test.db из нашего дампа test.sql можно так:
Другой способ создания базы данных заключается в использовании опции init :
В этом случае будет создана база, и мы войдем в оболочку программы. Можно добавить команду .exit. чтобы выйти из оболочки:
Бэкап базы данныхБэкап можно делать разными способами. Один способ из командной строки мы уже знаем:
Восстановить можно так:
При восстановлении важно убедиться, что базы catbase.db не существует. В противном случае вы можете получить различные сообщения об ошибках, так как объекты из бэкапа будут пытаться встать на место существующих объектов в базе, что не разрешено.
Второй способ нам тоже знаком, когда в самой оболочке мы делаем перенаправление во внешний файл, а затем восстанавливаем вывод данных на экран.
При сохранении базы данных в бинарном виде просто скопировать файл *.db недостаточно. Можно сократить размер базы, удалив неиспользуемые пробелы:
Команда командной строки copy копирует файл и сохраняет его под другим именем.
Не рекомендуется сохранять базу в бинарном виде, так как её нельзя прочесть. Но в некоторых случаях бывает проще удалить старый файл и переименовать из бэкапа сохраненный файл, чем восстанавливать записи. Смотрите по ситуации.
На этом третий урок завершён.
РекламаЭто руководство по программированию в Python используя базы данных SQLite. Оно покрывает основы программирования SQLite с помощью языка Python.
Необходимые условияЧтобы работать с примерами их статьи, мы должны иметь установленный в системе язык Python, базу данных SQLite. привязку к языку pysqlite и инструмент командной строки sqlite3. Если мы имеем Python 2.5+, тогда нам необходимо только установить инструмент командной строки sqlite3. Как библиотека SQLite, так и привязка к языку pysqlite встроены в язык Python.
В оболочке, мы запускаем интерактивный интерпретатор Python. Мы можем проверить версию Python. В нашем случае, это Python 2.7.3. sqlite.version – это версия pysqlite (2.6.0), которая является привязкой языка Python к базе данных SQLite. Sqlite3.sqlite_version даёт нам версию библиотеки базы данных SQLite. В нашем случае, версией является 3.7.13.
Сейчас мы собираемся использовать инструмент командной строки sqlite3. чтобы создать новую базу данных.
Мы предоставляем параметр для sqlite3 tool; test.db – это имя базы данных. Это файл на нашем диске. Если он присутствует, то он открывается. Если нет, он создаётся.
Команда .tables выдает список таблиц в базе данных test.db. В настоящее время нет таблиц. Команда .exit завершает интерактивную сессию инструмента командной строки sqlite3. Unix-команда ls показывает содержание текущей рабочей папки. Мы можем видеть файл test.db. Все данные будут хранить в этом единственном файле.
ВерсияВ первом примере кода, мы получим версию базы данных SQLite.
В скрипте Python выше, мы подключаемся к предварительно созданной базе данных test.db. Мы выполняем SQL-запрос, который возвращает версию базы данных SQLite .
Модуль sqlite используется для работы с базой данных SQLite.
Мы инициализируем переменную con как None. В случае, если бы мы не смогли произвести соединение с базой данных (к примеру, диск переполнен), мы не имели бы определенную переменную соединения. В конечном счёте, это приведёт к ошибке.
Здесь мы соединяемся с базой данных test.db. Метод connect() возвращает объект соединения.
Мы получаем объект указателя на соединения. Мы вызываем метод execute() и выполняем SQL запрос.
Мы получаем данные. С этого момента мы извлекаем только одну запись и вызываем метод fetchone ().
Мы выводим данные, которые мы получали в консоль.
В случае исключения, мы выдаем сообщение об ошибке и выходим из скрипта с кодом ошибки 1.
Финальным шагом, мы освобождаем ресурсы закрыв соединение.
Во втором примере, мы снова получаем версию базы данных SQLite. На этот раз мы будем использовать ключевое слово with.
Скрипт возвращает текущую версию базы данных SQlite. С использованием ключевого слова with, код является более компактным.
С помощью ключевого слова with, интерпретатор Python автоматически освобождает ресурсы. К тому же, это обеспечивает лучшую обработку ошибок.
Быстрая продажа свое добро можно используя доску объявлений Енакиево которая имеет большую базу активных посетителей. Вы всегда сможете превратить угрожающие ненужные вам вещи в весьма неплохие деньги.
Начиная с версии 3.3.6 SQLite позволяет загружать новые функции SQL и сортирующие последовательности из разделяемых библиотек и DLL. Это означает, что вам больше ненужно перекомпилировать SQLite, чтобы добавлять в него новые функции и сортировки.
Это новое экспериментальное API включает в себя функцию sqlite3_load_extension(). которая и выполняет загрузку. Экспериментальность этого API заключается в том, что его дальнейшая поддержка для обеспечения обратной совместимости не гарантируется в будущих релизах. Мы оставляем за собой право вносить изменения в данный интерфейс. После получения некоторого опыта с этим интерфейсом мы, возможно, избавим его от ярлыка "экспериментальный".
Новый API доступен из командной строки с использованием команды ".load" :
Новое API может быть использовано также и из SQL с помощью функции load_extension() :
Здесь имя_файла — имя разделяемой библиотеки или DLL, а точка_входа — имя инициализирующей функции в этой разделяемой библиотеке. Если точка входа не указана, то по умолчанию будет вызвана функция sqlite3_extension_init. Рекомендуется использовать именно умолчальную точку входа.
Точка входа должная быть функцией, соответствующей следующему прототипу:
Параметр db — это указатель на коннект к базе данных, возвращаемый функцией sqlite3_open(). Расширение может использовать этот аргумент только в таких функциях как sqlite3_create_function() и sqlite3_create_collation(). Если параметр pzErrMsg не является NULL, то расширение должно использовать sqlite3_mprintf() для генерации сообщения об ошибке и сохранить это сообщение в *pzErrMsg. Аргумент pApi содержит указатели на все API в вызываемой библиотеке. Расширения должны ссылаться на API SQLite с помощью этих указателей.
Соображения безопасностиНекоторые программы позволяют пользователям вводить SQL-запросы, которые затем проверяются с помощью sqlite3_set_authorizer() для предотвращения атак через программу. Новая SQL-функция load_extension(). описанная выше, позволяет обойти эту защиту и создает уязвимость в обсуждаемых приложениях. Во избежание этого весь механизм загрузки расширений отключён по умолчанию. Для включения механизма загрузки расширений используется следующий API:
Параметр onoff должен быть TRUE при загрузке расширения и FALSE при его отключении. Это позволяет программам, запускающим введённый пользователями SQL, обезопаситься от загрузки расширений. По умолчанию загружаемые расширения отключены на тот случай, если старые программы линкуются с новой версией SQLite. Это позволяет избежать потенциальных эксплойтов.
Пример расширенияСледующий код демонстрирует, как создавать загружаемое расширение:
В приведённом выше примере зелёным цветом подсвечен тот код, который должен присутствовать в каждом загружаемом расширении. Код, подсвеченный синим цветом, реализует ваше расширение. В примере реализована единственная функция SQL, которая умножает введённый параметр на 0.5. Реальное загружаемое расширение может быть гораздо более полезным.
Расширение вовсе не ограниченно созданием единственной функции или сортирующей последовательности. Мы думаем, что в общем случае расширения будут предоставлять множество пользовательских функций, сортирующих последовательностей и/или модулей виртуальных таблиц.
Заметьте, что расширение использует заголовочный файл "sqlite3ext.h" вместо "sqlite3.h". Это является важной особенностью. Динамически загружаемые расширения должны всегда использовать "sqlite3ext.h", в то время как статически линкуемые дополнения всегда используют "sqlite3.h". Если ваш код должен использоваться как в статической линковке, так и в качестве динамически загружаемого модуля, то необходимо использовать #ifdef. чтобы выполнить #include нужного заголовочного файла.
Символы SQLITE_EXTENSION_INIT1 и SQLITE3_EXTENSION_INIT2 являются макросами препроцессора C. которые переключают программный API на указатели функций в структуре "sqlite3_api_routines". Если вам это необходимо, вы можете посмотреть определения этих макросов в заголовочном файле "sqlite3ext.h", чтобы точно знать что они делают. В простейшем же случае, вы можете просто использовать их, как показано выше.
Как собрать загружаемое расширение в разделяемую библиотекуВам нужен заголовочный файл sqlite3ext.h. доступный в вашей системе. Если он еще не инсталлирован, вы можете найти его скачав амальгамацию SQLite (amalgamation). Будем считать, что он находится в директории sqlite3. Он должен быть той-же версии (или более старшей) что и sqlite3.h .
Имя файла расширения может быть любым на ваш выбор с традиционным расширением файла .so/.dll или чем-то более специфичным. Мы будем собирать half.sqlext из исходного кода half.c .
Использование GCC/MinGW под Windows и Linux Использование GCC под Mac OSX Microsoft Tools под Windows
Запуск из командной строки Чего хотелось быАвтоматическая загрузка расширений из разделяемых библиотек в момент открытия базы данных. Это было бы полезно для тех пользователей, которые используют не консольную программу, а только разделяемую библиотеку SQLite.
Список разделяемых библиотек, которые должны быть загружены при открытии данной базы данных, можно хранить в специальной таблице SQLite. Эти разделяемые библиотеки расширений не должны иметь путей или суффиксов имен файлов ( .dll или .so ).
Пользователь должен иметь возможность установить эти библиотеки таким способом, как это предусмотрено в его ОС с использованием соответствующих механизмов загрузки (PATH, LD_LIBRARY_PATH и т.п.). Соответственно суффикс имени файла должен определяться при компиляции sqlite3 под конкретную платформу и может быть .dll. so или чем-то еще.
Планируемая таблица может быть такой:
Всем привет.
Иногда в результате сбоя (обычно по питанию) "ломается" база данных и как правило ломается
центральный файл FlylinkDC.sqllite и программа FlylinkDC++ падает с сообщением
об ошибке вида - SQLIte database disk image is malformed
Автоматического ремонта у меня пока нет.
расскажу как можно сделать это руками
1. Закрываете флайлинк
2. Качаете консольную утилиту sqlite3.exe последней версии тут http://sqlite.org/download.html (Precompiled Binaries for Windows)
на сегодня это вот такая версия: http://sqlite.org/2014/sqlite-shell-win32-x86-3080500.zip
3. Раскрываете архив рядом с FlylinkDC.sqllite (там должен появиться файл sqlite3.exe)
4. Создаете резервный архив файлов *.sqlite
5. Cоздаете рядом бат-файл repair-sqlite.bat с содержимым
echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC.sqlite
sqlite3.exe FlylinkDC.sqlite .dump > FlylinkDC.sql
sqlite3.exe FlylinkDC-new.sqlite < FlylinkDC.sql
echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC-new.sqlite
ren FlylinkDC.sqlite FlylinkDC-old.sqlite
ren FlylinkDC-new.sqlite FlylinkDC.sqlite
del FlylinkDC.sql
pause
6. Запускаете repair-sqlite.bat он попытается починить базу данных.
7. После завершения батника запускаете флайлинк.
8. Сообщаете об успешном/не успешном лечении.
У меня на битом файле прошло вот так:
C:\!dc-db\db-sqlite-corrupt\db-bug-3>echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC.sqlite
*** in database main ***
On tree page 55555 cell 56: Rowid 8246430 out of order (max larger than parent max of 8246390)
On tree page 67284 cell 69: Rowid 8246524 out of order (max larger than parent max of 8246478)
Page 67283: btreeInitPage() returns error code 11
Error: near line 1: database disk image is malformed
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC.sqlite .dump 1>FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC-new.sqlite 0 C:\!dc-db\db-sqlite-corrupt\db-bug-3>echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC-new.sqlite
ok
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC.sqlite FlylinkDC-old.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC-new.sqlite FlylinkDC.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>del FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>pause
Теперь разбираемся с тем, как взаимодействовать с базой данных SQLite3. Есть три способа:
1. SQLite3 Command Line, т.е. через консоль OpenWrt.Для возможности работы через консоль был установлен пакет sqlite3-cli в прошлой заметке (opkg install sqlite3-cli ).
Для запуска CLI вводим в консоле sqlite3 <имя базы>.db. Создастся файл базы данных в текущем каталоге, а если он там уже существет с таким именем, то просто произойдет подключение.
Таблицу можно создать командой:
Внести данные в таблицу:
Индификтор (id) можно не указывать, он будет выставляться автоматически, а просто задавать значения остальных полей:
Перед выводом информации меняем режим отображения на колонки:
Вывод все информацию из таблицы temp:
Удаляем тестовую таблицу temp:
Смотрим список таблиц в базе:
В базе пусто, т.к. я удалил единственную таблицу.
Это основные команды для работы SQLite3, остальное ищем в документации.
2. SQLite3 в bashВторой способ взаимодействия с базой через скрипт на bash. Тестовый скрипт vi sqlite.sh :
Делаем скрипт исполняемым:
Запускаем скрипт и смотрим результат через CLI:
В CLI выгружаем все из таблицы temp:
Видим обе записи, которые внесли через скирпт sqlite.sh.
3. SQLite3 через PHP5Для примера покажу как выводить информацию из базы и отображать в браузере. Создал файл query.php в каталоге /www/home/test:
Если данные из базы видим в браузере, значит все работает.
Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!
Хотите поблагодарить автора за эту заметку? Вы можете это сделать!
SQLite - это библиотека, написанная на языке C, которая обеспечивает работу с SQL. Данный инструмент относится к Реляционным системам управления базами данных. Большинство баз данных SQL работает по схеме клиент/сервер. Возьмём к примеру MySQL. В процессе работы данные берутся с MySQL сервера, и отправляются в качестве ответа на запрос. В случае использования SQLite, данные будут браться непосредственно с диска, т.е. не будет необходимости обращаться к серверу.
Мы будем взаимодействовать с базой данных через интерфейс командной строки sqlite3 (CLI) в Linux. Работа с sqlite3 CLI в MAC OS и Windows осуществляется таким же образом, однако я рекомендую вам потратить 5 минут на установку виртуальной машины, чтобы не захламлять свой компьютер лишним софтом.
Для установки sqlite3 на Linux выполняем команду:
sudo apt-get install sqlite3 libsqlite3-dev
В результате на вашей машине будет установлен sqlite3. Для установки данного инструмента на других ОС следуйте инструкциям. Для запуска sqlite выполняем команду sqlite3 в консоли. Результат должен быть таким:
Во второй строчке указана подсказка о том, что для получения справки необходимо выполнить команду .help. Давайте сделаем это. В результате мы увидим Мета Команды и их описание.
Мета КомандыМета Команды - предназначены для формирования таблиц и других административных операций. Все они оканчиваются точкой. Пройдёмся по списку команд, которые могут пригодиться:
Стандартные командыТеперь давайте пройдёмся по списку стандартных команд sqlite3, которые предназначены для взаимодействия с базой данных. Стандартные команды могут быть классифицированы по трём группам:
Заметка. SQLite так же поддерживает и множество других команд, список которых можно найти тут. Поскольку данный урок предназначен для начинающих, мы ограничимся перечисленным набором команд.
Файлы баз данных SQLite являются кроссплатформенными. Они могут располагаться на различного рода устройствах.
Далее знакомство с sqlite3 будет осуществляться на базе данных, предназначенной для хранения комментариев. Для публикации комментария пользователю необходимо будет добавить следующие данные:
Из всех этих полей только адрес сайта может быть пустым. Так же можем ввести колонку для нумерации комментриев. Назовём её post_id .
Теперь давайте определимся с типами данных для каждой из колонок:
Тут вы сможете найти все типы данных, поддерживаемые в SQLite3.
Так же следует отметить, в SQLite3 данные, вставляемые в колонку могут отличаться от указанного типа. В MySQL такое не пройдёт.
Теперь давайте создадим базу данных. Если вы ещё находитесь в интерфейсе sqlite3, то наберите команду .quit для выхода. Теперь вводим:
В результате, в текущем каталоге у нас появится файл comment_section.db .
Заметка. если не указать название файла, sqlite3 создаст временную базу данных.
Для хранения комментариев нам необходимо создать таблицу. Назовём её comments. Выполняем команду:
NOT NULL обеспечит уверенность, что ячейка не будет содержать пустое значение. PRIMARY KEY и AUTOINCREMENT расширяют возможности поля post_id .
Чтобы убедиться в том, что таблица была создана, выполняем мета команду .tables. В результате видим нашу таблицу comments .
Заметка. Для получения структуры таблицы наберите .schema comments
Теперь можем внести данные в таблицу.
Предположим, что нам необходим внести следующую запись:
Для вставки воспользуемся командой INSERT .
Указывать значение для post_id не нужно т.к. оно сформируется автоматически благодаря настройке AUTOINCREMENT .
Чтобы набить руку можете вставить ещё несколько строк.
Для выборки данных воспользуемся командой SELECT .
Этот же запрос может выглядеть так:
В результате из таблицы будут извлечены все строки. Результат может выглядеть без разграничения по колонкам и без заголовка. Чтобы это исправить выполняем:
Для отображения шапки введите .headers ON .
Для отображения колонок выполните команду .mode column .
Выполняем SELECT запрос ещё раз.
Заметка. вид отображения можно изменить, воспользовавшись мета командой .mode .
Предположим, что поле email для пользователя ‘Shivam Mamgain’ необходимо изменить на ‘zyx@email.com’. Выполняем следующую команду:
В результате запись будет изменена.
Заметка. Значение в колонке name может быть не уникально, так что в результате работы команды может быть затронуто более одной строки. Для всех пользователей, где значение name = ‘Shivam Mamgain’, поле email будет изменено на ‘zyx@email.com’. Для изменения какой-то конкретной строки следует её отследить по полю post_id. Мы его определили как PRIMARY KEY. что обеспечивает уникальность значения.
Для выполнения команды DELETE нужно так же указать условие.
К примеру нам необходимо удалить комментарий с post_id = 9. Выполняем команду:
Для удаления комментариев пользователей ‘Bart Simpson’ и ‘Homer Simpson’ выполним:
Для добавления новой колонки следует использовать команду ALTER. К примеру введём поле username. Выполняем команду:
Данная команда создаст новое текстовое поле в таблице comments. Для всех сток в качестве значения будет выставлено NULL.
Так же мы можем использовать команду ALTER для переименования таблицы comments на Coms .
Для удаление нашей таблицы выполните следующую команду:
ЗаключениеSQLite3 даёт множество преимуществ в отличии от других СУБД. Множество фрэймворков таких как Django. Ruby on Rails и web2py по умолчанию используют SQLite3. Многие браузеры используют данный инструмент для хранения локальных данных. Так же она используется в качестве хранилища данных таких ОС как Android и Windows Phone 8 .
Для работы с SQLite3 можно воспользоваться и программами с графическим интерфейсом. К примеру: DB Browser for SQLite и SQLiteStudio. Для тренировки работы с SQL можете поиграть с SQL Fiddle .
Данный урок может помочь стартовать с SQLite3. Для взаимодействия с данным СУБД в PHP можем воспользоваться расширением PDO .
Хотите быстро изучить JavaScript и jQuery?
Предлагаю использовать самый эффективный и современный метод обучения - видеокурс .
За счет получения информации сразу по двум каналам (зрение и слух) эффективность обучения значительно превосходит обучение по книгам. А домашние задания и онлайн-тесты позволят вам постоянно думать на изучаемом языке и сразу проверять свои знания!
Более 100 видеоуроков на одном DVD.
Видеокурс "HTML с нуля"
Если вы давно хотите как следует изучить HTML, то у меня для Вас есть отличная новость!
Вы можете совершенно бесплатно получить полноценный курс по HTML из моего платного сборника. 33 видеоурока от Евгения Попова!
Видеокурс "CSS с нуля"
Если вы уже изучили HTML и хотите двигаться дальше, то следующим шагом будет изучение технологии CSS.
Так же, как и в случае с HTML, вы можете совершенно бесплатно получить полноценный курс по СSS из моего платного сборника. Вас ждет 45 подробных видеоуроков от Евгения Попова!
Видеокурс "Домен и хостинг"
Если вы хотите разобраться с понятиями домена и хостинга, научиться создавать базы данных, закачивать файлы сайта на сервер по FTP, создавать поддомены, настраивать почтовые ящики для своего сайта и следить за его посещаемостью, то этот курс создан специально для вас!
Получать новые уроки на E-mail:SQLite — облегченная встраиваемая реляционная база данных. Исходный код библиотеки передан в общественное достояние. В 2005 году проект получил награду Google-O’Reilly Open Source Awards.
SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа. Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется; ACID-функции достигаются в том числе за счёт создания файла журнала.
Несколько процессов или потоков могут одновременно без каких-либо проблем читать данные из одной базы. Запись в базу можно осуществить только в том случае, если никаких других запросов в данный момент не обслуживается; в противном случае попытка записи оканчивается неудачей, и в программу возвращается код ошибки. Другим вариантом развития событий является автоматическое повторение попыток записи в течение заданного интервала времени.
В комплекте поставки идёт также функциональная клиентская часть в виде исполняемого файла sqlite3, с помощью которого демонстрируется реализация функций основной библиотеки. Клиентская часть работает из командной строки, позволяет обращаться к файлу БД на основе типовых функций ОС.
Благодаря архитектуре движка возможно использовать SQLite как на встраиваемых системах, так и на выделенных машинах с гигабайтными массивами данных.
Версии SQLite 3.7.0Осуществлен переход на использование по умолчанию 4 версии формата схемы данных, что подразумевает также включение по умолчанию более нового формата убывающих индексов и нарушение совместимости с БД SQLite версии ниже 3.3.0 (выпущенных до 2006 года).
Некоторые другие изменения:
9 августа 2016 года стал доступен релиз SQLite 3.14.0.
Логотип версии, (2016)
Добавленные возможности и функции [1].
6 января 2015 года состоялся релиз SQLite 3.10.0, оформленной в виде подключаемой библиотеки [2].
30 июля 2015 года стало известно о публикации релиза SQLite 3.8.11 [3].
Вслед за ним вышел корректирующий релиз 3.8.11.1 для легковесной системы управления базами данных, оформленной в виде подключаемой библиотеки.
Тестирование нагрузки SQLite на ЦП, 2015