Node.js SQLite3

Содержание
  1. Введение Это драйвер node.js (асинхронные, неблокирующие привязки SQLite3) для sqlite3. Написан на JavaScript, не требует компиляции. Он обеспечивает почти все соединения/запросы из SQLit3. Вероятно, это один из лучших модулей, используемых для работы с базой данных SQLite3, и модуль активно поддерживается. Мы предполагаем, что вы уже установили SQLite3 и node.js в среде Windows или Linux. Вот пример получения имен (имя, фамилия ) из таблицы «Сотрудники» принадлежит базе данных «hr»: Примечание: модуль должен быть установлен перед использованием. var sqlite3 = require ('sqlite3'). verbose (); var file = "hr"; var db = new sqlite3.Database (файл); db.all ("ВЫБРАТЬ имя-фамилию из сотрудников", функция (ошибка, строки) {строки. forEach (function (row) {console.log (row.first_name, row.last_name);})}); db.close (); Вывод: E: nodejs> node test.jsСтивен КингНина КочхарЛекс Де ХаанАлександр ХунольдБрюс ЭрнстДэвид ОстинВалли ПатабаллаДиана ЛоренцНэнси ГринбергДэниел Фавиет ------------------------- --- Другой пример создания новой базы данных, таблицы, вставки и извлечения записей: var sqlite3 = require ('sqlite3') .verbose (); var db = new sqlite3.Database ('abcd'); db.serialize (f unction () {db.run ("СОЗДАТЬ ТАБЛИЦУ пользователя (id INT, dt TEXT)"); var stmt = db.prepare ("ВСТАВИТЬ В ЗНАЧЕНИЯ пользователя (?,?)"); for (var i = 0; i Вывод: E: nodejs> node test.js Идентификатор пользователя: 0 17: 14: 51 Идентификатор пользователя : 1 17: 14: 51 ID пользователя: 2 17: 14: 51 ID пользователя: 3 17: 14: 51 ID пользователя: 4 17: 14: 51 ID пользователя: 5 17: 14: 51 ID пользователя: 6 17: 14: 51 ID пользователя: 7 17: 14: 51 Идентификатор пользователя: 8 17: 14: 51 Идентификатор пользователя: 9 17:14:51 Возможности Простой запрос и привязка параметров интерфейс Полная поддержка буфера/больших двоичных объектов Расширенная поддержка отладки API сериализации запросов Поддержка расширений Написано на современном C ++ и протестировано на утечки памяти Установка Вы можете использовать npm для загрузки и установки l : Последний пакет sqlite3: npm install sqlite3 Основная ветка GitHub: npm install https://github.com/ mapbox/node-sqlite3/tarball/master В обоих случаях модуль автоматически создается с внутренней версией npm node-gyp, и, следовательно, ваша система должна соответствовать требованиям node-gyp. Поддерживаемая пла tforms Модуль sqlite3 работает с Node.js v0.10.x или v0.11.x (хотя только v0.11.13 и выше). Бинарные файлы для большинства версий и платформ Node предоставляются по умолчанию через node-pre-gyp. Node-sqlite3 имеет встроенную сериализацию вызовов функций и автоматически ожидает перед выполнением блокирующего действия, пока не прекратятся другие действия. в ожидании. Это означает, что можно безопасно начинать вызов функций для объекта базы данных, даже если он еще не полностью открыт. Функция Database # close () будет ждать завершения всех ожидающих запросов перед закрытием базы данных. API new sqlite3.Database (filename , [режим], [обратный вызов]) Возвращает новый объект базы данных и автоматически открывает базу данных. Не существует отдельного метода для открытия базы данных. Имя Описание filename Допустимыми значениями являются имена файлов, «: memory:» для анонимной базы данных в памяти и пустая строка для анонимной дисковой базы данных. база данных. Анонимные базы данных не сохраняются, и при закрытии дескриптора базы данных их содержимое теряется. mode (необязательно) Один или больше о sqlite3.OPEN_READONLY, sqlite3.OPEN_READWRITE и sqlite3.OPEN_CREATE. Значение по умолчанию OPEN_READWRITE | OPEN_CREATE. обратный вызов (необязательно) Если предоставлен, эта функция будет вызываться при успешном открытии базы данных или при Возникла ошибка. Первый аргумент — объект ошибки. Если он равен нулю, открытие выполнено успешно. Если обратный вызов не предоставлен и произошла ошибка, для объекта базы данных будет выдано событие ошибки с объектом ошибки в качестве единственного параметра. Если открытие прошло успешно, генерируется событие открытия без параметров, независимо от того, был ли предоставлен обратный вызов. sqlite3 .verbose () Устанавливает подробный режим выполнения для создания длинных трассировок стека. Сбросить это невозможно. См. Вики-страницу об отладке для получения дополнительной информации. Close Database Database # close ([callback]) Закрывает базу данных. Обратный вызов (необязательно): если предоставлен, эта функция будет вызываться при успешном закрытии базы данных или при возникновении ошибки. Выполнить SQL-запрос База данных # run (sql, [param, …], [callback]) Выполняет SQL-запрос с указанными параметрами и после этого вызывает обратный вызов. Он не получает никаких данных о результатах. Функция возвращает объект базы данных, для которого она была вызвана, чтобы обеспечить возможность объединения функций. Name Описание sql SQL-запрос для выполнения. Если запрос SQL недействителен и функции был передан обратный вызов, он вызывается с объектом ошибки, содержащим сообщение об ошибке от SQLite. Если обратный вызов не был передан и подготовка не удалась, в базовом объекте Statement будет выдано событие ошибки. param, … (необязательно) Когда оператор SQL содержит заполнители, вы можете передать их сюда. Они будут привязаны к оператору перед его выполнением. Есть три способа передачи параметров связывания: непосредственно в аргументах функции, в виде массива и в виде объекта для именованных параметров.. Выполняет SQL-запрос с указанными параметрами База данных # get (sql, [param, …], [callback]) Выполняет SQL-запрос с указанными параметрами и вызывает обратный вызов с первая строка результатов после. Функция возвращает объект базы данных, чтобы обеспечить возможность объединения функций. База данных # all (sql, [param, …], [ callback]) Выполняет SQL-запрос с указанными параметрами и после этого вызывает обратный вызов со всеми строками результатов. Функция возвращает объект базы данных, чтобы можно было объединить функции в цепочку. База данных № каждый (sql, [param, …], [callback], [complete]) Выполняет SQL-запрос с указанными параметрами и вызывает обратный вызов для каждой строки результата. Функция возвращает объект базы данных, чтобы разрешить цепочку функций. Выполняет запросы SQL в предоставленной строке База данных # exec (sql, [callback]) Выполняет все запросы SQL в предоставленной строке. Строки результатов не извлекаются. Функция возвращает объект базы данных, чтобы разрешить цепочку функций. В случае сбоя запроса никакие последующие операторы выполняться не будут. Подготовка оператора SQL База данных # prepare (sql, [param, …], [callback]) Подготавливает оператор SQL и, при необходимости, связывает указанные параметры и по завершении вызывает обратный вызов. Функция возвращает объект Statement. Statement # bind ([param, …], [callback]) Привязывает параметры к подготовленный оператор и вызывает обратный вызов по завершении или при возникновении ошибки. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Первый и единственный аргумент обратного вызова имеет значение null, если привязка была успешной, в противном случае это объект ошибки. Заявление # reset ([обратный вызов]) Сбрасывает курсор строки оператора и сохраняет привязки параметров. Используйте эту функцию, чтобы повторно выполнить тот же запрос с теми же привязками. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Обратный вызов будет вызван после завершения сброса. Заявление # finalize ([callback]) Завершает инструкцию. Обычно это необязательно, но если вы испытываете длительные задержки перед выполнением следующего запроса, может потребоваться явное завершение вашего оператора. Это может иметь место, когда вы запускаете эксклюзивный запрос (см. Раздел «Сериализация»). Заявление # run ([param, …], [callback]) Связывает параметры и выполняет инструкцию. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Statement # get ([param, …], [callback]) Связывает параметры, выполняет инструкцию и получает первую строку результата. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Заявление # all ([param,. ], [обратный вызов]) Связывает параметры, выполняет инструкцию и вызывает обратный вызов со всеми строками результатов. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Инструкция # каждый ([param, …], [callback], [complete]) Связывает параметры, выполняет инструкцию и вызывает обратный вызов для каждой строки результатов. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Отладка Написание асинхронных функций с использованием пула потоков, к сожалению, также удаляет всю информацию трассировки стека, что делает отладку очень сложной, поскольку вы видите только сообщение об ошибке, а не то, какой оператор вызвал Это. Чтобы смягчить эту проблему, в node-sqlite3 есть подробный режим, который фиксирует трассировку стека при постановке запросов в очередь. Чтобы включить этот режим, вызовите sqlite3.verbose () или вызовите его напрямую, когда потребуется: var sqlite3 = require (‘sqlite3’). Verbose (). Когда вы выдаете ошибку из обратный вызов, переданный любой из функций базы данных, node-sqlite3 добавит информацию трассировки стека из исходного вызова, например: var db = new sqlite3.Database ('abcd ); ^^^^^^^ SyntaxError: неожиданный токен ILLEGAL в Module._compile (module.js: 439: 25) в Object.Module._extensions..js (module.js: 474: 10) в Module.load (module. js: 356: 32) в Function.Module._load (module.js: 312: 12) в Function.Module.runMain (module.js: 497: 10) при запуске (node.js: 119: 16) в узле. js: 902: 3 Обратите внимание, что вам не следует включать подробный режим в производственных настройках, поскольку снижение производительности при сборе трассировок стека довольно велико. В настоящее время подробный режим не добавляет информацию о трассировке стека к объектам ошибок, выдаваемым объектами Statement или Database. База данных # on (‘trace’, [callback]) Событие трассировки генерируется всякий раз, когда выполняется запрос. Первым и единственным параметром обратного вызова является строка SQL, отправленная в базу данных. Событие генерируется, как только запрос выполняется (например, с помощью .run () или .get ()). Одиночный оператор может быть выполнен более одного раза. Операторы EXPLAIN не будут запускать событие, поэтому можно безопасно передавать все SQL-запросы, которые вы получаете из этого события, обратно в базу данных с префиксом EXPLAIN QUERY PLAN. Если вы выполняете операторы из этого обратного вызова, сделайте убедитесь, что вы не входите в бесконечный цикл! База данных # на (‘profile’, [callback]) Событие профиля генерируется всякий раз, когда запрос завершается. Первый параметр — это строка SQL, которая была отправлена ​​в базу данных, второй параметр — это приблизительное время выполнения в миллисекундах. Событие генерируется после завершения запроса. Если вы выполняете инструкции из этого обратного вызова, убедитесь, что вы не входите в бесконечный цикл! Структура базы данных ‘hr’:
  2. Возможности
  3. Установка
  4. API
  5. Отладка

Введение

Это драйвер node.js (асинхронные, неблокирующие привязки SQLite3) для sqlite3. Написан на JavaScript, не требует компиляции. Он обеспечивает почти все соединения/запросы из SQLit3. Вероятно, это один из лучших модулей, используемых для работы с базой данных SQLite3, и модуль активно поддерживается.

Мы предполагаем, что вы уже установили SQLite3 и node.js в среде Windows или Linux.

Вот пример получения имен (имя, фамилия ) из таблицы «Сотрудники» принадлежит базе данных «hr»:

Примечание: модуль должен быть установлен перед использованием.

  var sqlite3 = require  ('sqlite3'). verbose (); var file = "hr"; var db = new sqlite3.Database (файл); db.all ("ВЫБРАТЬ имя-фамилию из сотрудников", функция (ошибка, строки) {строки.  forEach (function (row) {console.log (row.first_name, row.last_name);})}); db.close ();  

Вывод:

 E:  nodejs> node test.jsСтивен КингНина КочхарЛекс Де ХаанАлександр ХунольдБрюс ЭрнстДэвид ОстинВалли ПатабаллаДиана ЛоренцНэнси ГринбергДэниел Фавиет -------------------------  --- 

Другой пример создания новой базы данных, таблицы, вставки и извлечения записей:

  var sqlite3 = require ('sqlite3')  .verbose (); var db = new sqlite3.Database ('abcd'); db.serialize (f  unction () {db.run ("СОЗДАТЬ ТАБЛИЦУ пользователя (id INT, dt TEXT)");  var stmt = db.prepare ("ВСТАВИТЬ В ЗНАЧЕНИЯ пользователя (?,?)");  for (var i = 0; i  

Вывод:

 E:  nodejs> node test.js Идентификатор пользователя: 0 17: 14: 51 Идентификатор пользователя  : 1 17: 14: 51 ID пользователя: 2 17: 14: 51 ID пользователя: 3 17: 14: 51 ID пользователя: 4 17: 14: 51 ID пользователя: 5 17: 14: 51 ID пользователя: 6 17: 14: 51 ID пользователя: 7  17: 14: 51 Идентификатор пользователя: 8 17: 14: 51 Идентификатор пользователя: 9 17:14:51 

Возможности

  • Простой запрос и привязка параметров интерфейс
  • Полная поддержка буфера/больших двоичных объектов
  • Расширенная поддержка отладки
  • API сериализации запросов
  • Поддержка расширений
  • Написано на современном C ++ и протестировано на утечки памяти

Установка

Вы можете использовать npm для загрузки и установки l :

Последний пакет sqlite3: npm install sqlite3

Основная ветка GitHub: npm install https://github.com/ mapbox/node-sqlite3/tarball/master

В обоих случаях модуль автоматически создается с внутренней версией npm node-gyp, и, следовательно, ваша система должна соответствовать требованиям node-gyp.

Поддерживаемая пла tforms

Модуль sqlite3 работает с Node.js v0.10.x или v0.11.x (хотя только v0.11.13 и выше). Бинарные файлы для большинства версий и платформ Node предоставляются по умолчанию через node-pre-gyp.

Node-sqlite3 имеет встроенную сериализацию вызовов функций и автоматически ожидает перед выполнением блокирующего действия, пока не прекратятся другие действия. в ожидании. Это означает, что можно безопасно начинать вызов функций для объекта базы данных, даже если он еще не полностью открыт. Функция Database # close () будет ждать завершения всех ожидающих запросов перед закрытием базы данных.

API

new sqlite3.Database (filename , [режим], [обратный вызов])

Возвращает новый объект базы данных и автоматически открывает базу данных. Не существует отдельного метода для открытия базы данных.

Имя Описание
filename Допустимыми значениями являются имена файлов, «: memory:» для анонимной базы данных в памяти и пустая строка для анонимной дисковой базы данных. база данных. Анонимные базы данных не сохраняются, и при закрытии дескриптора базы данных их содержимое теряется.
mode (необязательно) Один или больше о sqlite3.OPEN_READONLY, sqlite3.OPEN_READWRITE и sqlite3.OPEN_CREATE. Значение по умолчанию OPEN_READWRITE | OPEN_CREATE.
обратный вызов (необязательно) Если предоставлен, эта функция будет вызываться при успешном открытии базы данных или при Возникла ошибка. Первый аргумент — объект ошибки. Если он равен нулю, открытие выполнено успешно. Если обратный вызов не предоставлен и произошла ошибка, для объекта базы данных будет выдано событие ошибки с объектом ошибки в качестве единственного параметра. Если открытие прошло успешно, генерируется событие открытия без параметров, независимо от того, был ли предоставлен обратный вызов.

sqlite3 .verbose ()

Устанавливает подробный режим выполнения для создания длинных трассировок стека. Сбросить это невозможно. См. Вики-страницу об отладке для получения дополнительной информации.

Close Database

Database # close ([callback])

Закрывает базу данных.

Обратный вызов (необязательно): если предоставлен, эта функция будет вызываться при успешном закрытии базы данных или при возникновении ошибки.

Выполнить SQL-запрос

База данных # run (sql, [param, …], [callback])

Выполняет SQL-запрос с указанными параметрами и после этого вызывает обратный вызов. Он не получает никаких данных о результатах. Функция возвращает объект базы данных, для которого она была вызвана, чтобы обеспечить возможность объединения функций.

Name Описание
sql SQL-запрос для выполнения. Если запрос SQL недействителен и функции был передан обратный вызов, он вызывается с объектом ошибки, содержащим сообщение об ошибке от SQLite. Если обратный вызов не был передан и подготовка не удалась, в базовом объекте Statement будет выдано событие ошибки.
param, … (необязательно) Когда оператор SQL содержит заполнители, вы можете передать их сюда. Они будут привязаны к оператору перед его выполнением. Есть три способа передачи параметров связывания: непосредственно в аргументах функции, в виде массива и в виде объекта для именованных параметров..

Выполняет SQL-запрос с указанными параметрами

База данных # get (sql, [param, …], [callback])
Выполняет SQL-запрос с указанными параметрами и вызывает обратный вызов с первая строка результатов после. Функция возвращает объект базы данных, чтобы обеспечить возможность объединения функций.

База данных # all (sql, [param, …], [ callback])
Выполняет SQL-запрос с указанными параметрами и после этого вызывает обратный вызов со всеми строками результатов. Функция возвращает объект базы данных, чтобы можно было объединить функции в цепочку.

База данных № каждый (sql, [param, …], [callback], [complete])
Выполняет SQL-запрос с указанными параметрами и вызывает обратный вызов для каждой строки результата. Функция возвращает объект базы данных, чтобы разрешить цепочку функций.

Выполняет запросы SQL в предоставленной строке

База данных # exec (sql, [callback])
Выполняет все запросы SQL в предоставленной строке. Строки результатов не извлекаются. Функция возвращает объект базы данных, чтобы разрешить цепочку функций. В случае сбоя запроса никакие последующие операторы выполняться не будут.

Подготовка оператора SQL

База данных # prepare (sql, [param, …], [callback])
Подготавливает оператор SQL и, при необходимости, связывает указанные параметры и по завершении вызывает обратный вызов. Функция возвращает объект Statement.

Statement # bind ([param, …], [callback])
Привязывает параметры к подготовленный оператор и вызывает обратный вызов по завершении или при возникновении ошибки. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Первый и единственный аргумент обратного вызова имеет значение null, если привязка была успешной, в противном случае это объект ошибки.

Заявление # reset ([обратный вызов])
Сбрасывает курсор строки оператора и сохраняет привязки параметров. Используйте эту функцию, чтобы повторно выполнить тот же запрос с теми же привязками. Функция возвращает объект Statement, позволяющий объединить функции в цепочку. Обратный вызов будет вызван после завершения сброса.

Заявление # finalize ([callback])
Завершает инструкцию. Обычно это необязательно, но если вы испытываете длительные задержки перед выполнением следующего запроса, может потребоваться явное завершение вашего оператора. Это может иметь место, когда вы запускаете эксклюзивный запрос (см. Раздел «Сериализация»).

Заявление # run ([param, …], [callback])
Связывает параметры и выполняет инструкцию. Функция возвращает объект Statement, позволяющий объединить функции в цепочку.

Statement # get ([param, …], [callback])
Связывает параметры, выполняет инструкцию и получает первую строку результата. Функция возвращает объект Statement, позволяющий объединить функции в цепочку.

Заявление # all ([param,. ], [обратный вызов])
Связывает параметры, выполняет инструкцию и вызывает обратный вызов со всеми строками результатов. Функция возвращает объект Statement, позволяющий объединить функции в цепочку.

Инструкция # каждый ([param, …], [callback], [complete])
Связывает параметры, выполняет инструкцию и вызывает обратный вызов для каждой строки результатов. Функция возвращает объект Statement, позволяющий объединить функции в цепочку.

Отладка

Написание асинхронных функций с использованием пула потоков, к сожалению, также удаляет всю информацию трассировки стека, что делает отладку очень сложной, поскольку вы видите только сообщение об ошибке, а не то, какой оператор вызвал Это. Чтобы смягчить эту проблему, в node-sqlite3 есть подробный режим, который фиксирует трассировку стека при постановке запросов в очередь. Чтобы включить этот режим, вызовите sqlite3.verbose () или вызовите его напрямую, когда потребуется: var sqlite3 = require (‘sqlite3’). Verbose ().

Когда вы выдаете ошибку из обратный вызов, переданный любой из функций базы данных, node-sqlite3 добавит информацию трассировки стека из исходного вызова, например:

  var db = new sqlite3.Database ('abcd  );  ^^^^^^^ SyntaxError: неожиданный токен ILLEGAL в Module._compile (module.js: 439: 25) в Object.Module._extensions..js (module.js: 474: 10) в Module.load (module.  js: 356: 32) в Function.Module._load (module.js: 312: 12) в Function.Module.runMain (module.js: 497: 10) при запуске (node.js: 119: 16) в узле.  js: 902: 3  

Обратите внимание, что вам не следует включать подробный режим в производственных настройках, поскольку снижение производительности при сборе трассировок стека довольно велико. В настоящее время подробный режим не добавляет информацию о трассировке стека к объектам ошибок, выдаваемым объектами Statement или Database.

База данных # on (‘trace’, [callback])
Событие трассировки генерируется всякий раз, когда выполняется запрос. Первым и единственным параметром обратного вызова является строка SQL, отправленная в базу данных. Событие генерируется, как только запрос выполняется (например, с помощью .run () или .get ()). Одиночный оператор может быть выполнен более одного раза. Операторы EXPLAIN не будут запускать событие, поэтому можно безопасно передавать все SQL-запросы, которые вы получаете из этого события, обратно в базу данных с префиксом EXPLAIN QUERY PLAN.

Если вы выполняете операторы из этого обратного вызова, сделайте убедитесь, что вы не входите в бесконечный цикл!

База данных # на (‘profile’, [callback])
Событие профиля генерируется всякий раз, когда запрос завершается. Первый параметр — это строка SQL, которая была отправлена ​​в базу данных, второй параметр — это приблизительное время выполнения в миллисекундах. Событие генерируется после завершения запроса.

Если вы выполняете инструкции из этого обратного вызова, убедитесь, что вы не входите в бесконечный цикл!

Структура базы данных ‘hr’:


Оцените статью
nanomode.ru
Добавить комментарий