È possibile accedere a un database SQLite da JavaScript?


97

Ho una serie di file HTML e un database SQLite, a cui vorrei accedere dal browser, utilizzando lo schema file: //. È possibile accedere al database e creare query (e tabelle) utilizzando JavaScript?


3
Per file:schema intendi sul computer su cui è in esecuzione il browser ?

3
Sì. Attualmente ho uno strumento che crea un report (un mucchio di immagini, file html e un database sqlite). Posso semplicemente aprire questo rapporto localmente (cioè $ google-chrome report_out / index.html). Vorrei renderlo più interattivo, in modo che il javascript legga i dati generati dal database e ne crei delle statistiche.
Pal Szasz

credo che sarebbe possibile effettuare una connessione tramite un proxy WebSocket, ma ci vorrebbe un bel po 'di lavoro per la configurazione
hanshenrik

Risposte:


41

In realtà la risposta è sì. Ecco un esempio di come puoi farlo: http://html5doctor.com/introducing-web-sql-databases/

La cosa brutta è che ha un supporto molto limitato da parte dei browser.

Maggiori informazioni qui HTML5 IndexedDB, Web database SQL e browser wars

PS: Come ha detto @Christoph, Web SQL non è più in manutenzione attiva e il gruppo di lavoro sulle applicazioni Web non intende mantenerlo ulteriormente, quindi guarda qui https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

MODIFICARE

Come @clentfort Detto questo, è possibile accedere a database SQLite con JavaScript lato client utilizzando SQL.js .


15
FYI websql è stato abbandonato ... Promuovi invece indexedDB .
Christoph

2
Ma è possibile connettersi al database già esistente? Ho già un sacco di dati in esso, che vorrei elaborare con javascript.
Pal Szasz

Puoi andare con alcune cose lato server, o provare Node.JS per questo codeforgeek.com/2014/07/node-sqlite-tutorial
Mrug

40

È possibile utilizzare SQL.js che è la libreria SQLlite compilata in JavaScript e archiviare il database nella memoria locale introdotta in HTML5.


9
l'archiviazione locale è molto lenta e goffa ... dovresti invece usare indexedDB. Tuttavia questa è una soluzione funzionante immagino.
Christoph

2
Sebbene localstorage non sia bello come indexedDB, è supportato praticamente ovunque. SQL.js non utilizza direttamente localstorage (è in memoria), quindi devi solo leggere / scrivere su localstorage all'avvio / spegnimento, potresti persino salvare lo stato di SQL.js su un server. Buono se si desidera che l'utente salvi in ​​modo specifico le modifiche, cattivo se un utente che esce senza lasciarlo salvare può rompere le cose.
Perkins

20

Risposta aggiornata

Il mio fork di sql.js è stato ora unito alla versione originale, nel repo di kriken .

La buona documentazione è disponibile anche sul repo originale.

Risposta originale (obsoleta)

Si consiglia di utilizzare la versione più recente di sql.js . È un port di sqlite 3.8, ha una buona documentazione ed è attivamente mantenuto (da me). Supporta istruzioni preparate e tipo di dati BLOB.


Posso usare sql.js per accedere (inserire, aggiornare, leggere) il database SQLite che si trova sul lato server.
Abhee

@lovasoa Se uso sql.js, un nuovo computer può eseguire il mio sito ed eseguire il CRUD nel suo database (db memorizzato nello stesso percorso con la cartella HTML) senza eseguire alcuna installazione?
Jeaf Gilbert,

1
@JeafGilbert No. sql.js opera esclusivamente in memoria, nulla è persistente. Se vuoi scrivere il file di database sul tuo filesystem, dovrai scrivere tu stesso quella logica.
lovasoa

4

Una delle funzionalità più interessanti di HTML5è la possibilità di memorizzare i dati in locale e di consentire l'esecuzione offline dell'applicazione. Esistono tre diverse API che si occupano di queste funzionalità e la scelta di una dipende da cosa esattamente si desidera fare con i dati che si prevede di archiviare localmente:

  1. Archiviazione Web: per l'archiviazione locale di base con coppie chiave / valore
  2. Archiviazione offline: utilizza un manifest per memorizzare nella cache interi file per l'utilizzo offline
  3. Database Web: per l'archiviazione di database relazionali

Per ulteriori informazioni, vedere Introduzione alle API di archiviazione HTML5

E come si usa

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


5
hehe, dai un'occhiata alla seconda revisione della tua risposta, lì puoi leggerla;)
Christoph


-2

IMHO, il modo migliore è chiamare Python utilizzando POST tramite AJAX e fare tutto ciò che è necessario fare con il DB all'interno di Python, quindi restituire il risultato al javascript. Il supporto di json e sqlite in Python è fantastico ed è integrato al 100% anche nelle versioni leggermente recenti di Python, quindi non c'è dolore "installa questo, installa quello". In Python:

import sqlite3
import json

... è tutto ciò di cui hai bisogno. Fa parte di ogni distribuzione Python.

@Sedrick Jefferson ha chiesto degli esempi, quindi (un po 'tardivamente) ho scritto un avanti e indietro autonomo tra Javascript e Python qui.


2
la domanda contiene "... a cui vorrei accedere dal browser ..." . quindi la tua risposta (con python) è fuori area (almeno oggi, quando non è così facile eseguire python da un browser)
maxkoryukov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.