Чи можна отримати доступ до бази даних SQLite з JavaScript?


97

У мене є набір файлів HTML та база даних SQLite, до якої я хотів би отримати доступ із браузера, використовуючи схему file: //. Чи можна отримати доступ до бази даних і створювати запити (і таблиці) за допомогою JavaScript?


3
Під file:схемою ви маєте на увазі на комп’ютері, на якому працює браузер ?

3
Так. На даний момент у мене є інструмент, який створює звіт (купа зображень, файли HTML та база даних sqlite). Я можу просто відкрити цей звіт локально (тобто $ google-chrome report_out / index.html). Я хотів би зробити це більш інтерактивним, щоб javascript читав згенеровані дані з бази даних та створював із неї статистику.
Pal Szasz

я вважаю, що можна було б встановити з'єднання через проксі-сервер WebSocket, але для його налаштування знадобиться чимало роботи
hanshenrik

Відповіді:


41

Насправді відповідь так. Ось приклад того, як це можна зробити: http://html5doctor.com/introducing-web-sql-databases/

Погана річ у тому, що браузер підтримує дуже обмежену підтримку.

Більше інформації тут HTML5 IndexedDB, Web SQL Database та браузерні війни

PS: Оскільки @Christoph сказав, що Web SQL більше не знаходиться в активному обслуговуванні, і Робоча група веб-додатків не збирається надалі підтримувати його, тому дивіться тут https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

РЕДАГУВАТИ

Як @clentfort сказав, ви можете отримати доступ до бази даних SQLite з клієнтської сторони JavaScript за допомогою SQL.js .


14
FYI websql було відмовлено ... Замість цього рекламуйте indexedDB .
Крістоф

2
Але чи можна підключитися до вже існуючої бази даних? У мене вже є купа даних, які я хотів би обробити за допомогою JavaScript.
Пал Саш,

Ви можете піти з деякими серверними матеріалами або спробувати Node.JS для цього codeforgeek.com/2014/07/node-sqlite-tutorial
Mrug

40

Ви можете використовувати SQL.js, що є бібліотекою SQLlite, скомпільованою до JavaScript, і зберігати базу даних у локальному сховищі, введеному в HTML5.


9
локальне сховище дуже повільне і незграбне ... замість нього слід використовувати indexedDB. Тим не менш, це робоче рішення, я думаю.
Крістоф

2
Хоча localstorage не такий приємний, як indexedDB, він підтримується майже скрізь. SQL.js не використовує localstorage безпосередньо (це в пам'яті), тому вам потрібно лише читати з / писати в localstorage під час запуску / завершення роботи, ви навіть можете зберегти стан SQL.js на сервері. Добре, якщо ви хочете, щоб користувач спеціально зберігав зміни, погано, якщо користувач, який виходить, не дозволяючи йому зберігати, може зламати речі.
Перкінс

20

Сучасна відповідь

Моя вилка sql.js тепер об’єднана в оригінальну версію, на репо крикена .

Документація добре також доступні на початковому репо.

Оригінальна відповідь (застаріла)

Ви повинні використовувати нову версію sql.js . Це порт sqlite 3.8, має хорошу документацію та активно підтримується (мною). Він підтримує підготовлені оператори та тип даних BLOB.


Чи можу я використовувати sql.js для доступу (вставки, оновлення, читання) бази даних SQLite, яка знаходиться на стороні сервера.
Abhee

@lovasoa Якщо я використовую sql.js, чи може новий комп’ютер запустити мій сайт і перенести CRUD у свою базу даних (db, що зберігається в одному шляху з папкою HTML), не виконуючи жодної установки?
Джиф Гілберт,

1
@JeafGilbert No. sql.js працює виключно в пам'яті, нічого не зберігається. Якщо ви хочете записати файл бази даних у свою файлову систему, вам доведеться написати цю логіку самостійно.
lovasoa

4

Однією з найцікавіших функцій в HTML5є можливість зберігати дані локально та дозволяти додатку працювати в автономному режимі. Існує три різних API, які мають справу з цими функціями, і вибір одного залежить від того, що саме ви хочете зробити з даними, які плануєте зберігати локально:

  1. Веб-сховище: Для основного локального сховища з парами ключ / значення
  2. Автономне сховище: використовує маніфест для кешування цілих файлів для використання в автономному режимі
  3. Веб-база даних: для зберігання реляційних баз даних

Докладніші відомості див. У розділі Введення API зберігання HTML5

І як користуватися

http://cookbooks.adobe.com/post_Store_data_in_the_HTML5_SQLite_database-19115.html


5
хе-хе, погляньте на другу редакцію вашої відповіді, там ви можете її прочитати;)
Крістоф

1

А як щодо використання чогось на зразок PouchDB? http://pouchdb.com/


як ви можете бачити, автор запитання має sqlite DB, і ви не надали приклади та сценарій для перетворення SQLITE => POUCHDB
maxkoryukov

-2

ІМХО, найкращий спосіб - зателефонувати Python за допомогою POST через AJAX і зробити все, що потрібно для роботи з БД в Python, а потім повернути результат у javascript. Підтримка json та sqlite у Python є неймовірною, і вона на 100% вбудована в навіть трохи новіші версії Python, тому немає жодної болі "встановити це, встановити те". У Python:

import sqlite3
import json

... це все, що вам потрібно. Це частина кожного дистрибутива Python.

@Седрік Джефферсон запитував приклади, тому (дещо з запізненням) я написав тут окремий перегляд між Javascript та Python.


2
питання містить "... до якого я хотів би отримати доступ з браузера ..." . отже, ваша відповідь (with python) поза межами області (принаймні сьогодні, коли запустити python з браузера не так просто)
maxkoryukov
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.