Czy jest możliwy dostęp do bazy danych SQLite z JavaScript?


97

Mam zestaw plików HTML i bazę danych SQLite, do której chciałbym uzyskać dostęp z przeglądarki, korzystając ze schematu file: //. Czy można uzyskać dostęp do bazy danych i tworzyć zapytania (i tabele) za pomocą JavaScript?


3
Mówiąc file:schematycznie, masz na myśli komputer, na którym działa przeglądarka ?

3
Tak. Obecnie mam narzędzie, które tworzy raport (kilka zdjęć, pliki html i baza danych sqlite). Mogę po prostu otworzyć ten raport lokalnie (np. $ Google-chrome report_out / index.html). Chciałbym, aby było to bardziej interaktywne, aby javascript odczytywał wygenerowane dane z bazy danych i tworzył z nich statystyki.
— Pal Szasz

wierzę, że nawiązanie połączenia przez serwer proxy WebSocket byłoby możliwe, ale konfiguracja wymagałaby sporo pracy
— hanshenrik

Odpowiedzi:


41

Właściwie odpowiedź brzmi: tak. Oto przykład, jak możesz to zrobić: http://html5doctor.com/introducing-web-sql-databases/

Złe jest to, że ma bardzo ograniczone wsparcie ze strony przeglądarek.

Więcej informacji tutaj HTML5 IndexedDB, Web SQL Database i wojny przeglądarek

PS: Jak powiedział @Christoph, Web SQL nie jest już aktywnie utrzymywany, a grupa robocza ds. Aplikacji internetowych nie zamierza dalej go utrzymywać, więc spójrz tutaj https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

EDYTOWAĆ

Jak @clentfort powiedział, można uzyskać dostęp do bazy danych SQLite z JavaScript po stronie klienta za pomocą SQL.js .


15
FYI websql zostało porzucone ... Zamiast tego promuj indexedDB .
— Christoph

2
Ale czy można połączyć się z już istniejącą bazą danych? Mam już w nim sporo danych, które chciałbym przetworzyć za pomocą javascript.
— Pal Szasz

Możesz przejść do rzeczy po stronie serwera lub wypróbować Node.JS dla tego codeforgeek.com/2014/07/node-sqlite-tutorial
— Mrug

40

Możesz użyć SQL.js, który jest biblioteką SQLlite skompilowaną do JavaScript i przechowywać bazę danych w lokalnym magazynie wprowadzonym w HTML5.


9
lokalna pamięć masowa jest bardzo powolna i niezgrabna ... zamiast tego powinieneś użyć indexedDB. Mimo wszystko jest to chyba działające rozwiązanie.
— Christoph

2
Chociaż localstorage nie jest tak przyjemna, jak indexedDB, jest obsługiwana prawie wszędzie. SQL.js nie używa bezpośrednio magazynu lokalnego (jest w pamięci), więc musisz tylko czytać z / zapisywać do magazynu lokalnego podczas uruchamiania / zamykania, możesz nawet zapisać stan SQL.js na serwerze. Dobrze, jeśli chcesz, aby użytkownik specjalnie zapisywał zmiany, źle, jeśli użytkownik odejdzie bez pozwolenia na zapisanie, może zepsuć sytuację.
— Perkins

20

Aktualna odpowiedź

Moje rozwidlenie sql.js zostało teraz włączone do oryginalnej wersji w repozytorium krikena .

Dokumentacja dobry jest również dostępna na oryginalnym repo.

Oryginalna odpowiedź (nieaktualna)

Należy użyć nowszej wersji sql.js . Jest to port sqlite 3.8, ma dobrą dokumentację i jest aktywnie utrzymywany (przeze mnie). Obsługuje przygotowane zestawienia i typ danych BLOB.


Czy mogę używać sql.js do uzyskiwania dostępu (wstawianie, aktualizowanie, odczytywanie) bazy danych SQLite, która jest po stronie serwera.
— Abhee,

@lovasoa Jeśli używam sql.js, czy nowy komputer może uruchomić moją witrynę i wykonać CRUD do swojej bazy danych (baza danych przechowywana w tej samej ścieżce z folderem HTML) bez wykonywania jakichkolwiek instalacji?
— Jeaf Gilbert,

1
@JeafGilbert nr sql.js działa wyłącznie w pamięci, nic nie jest utrwalane. Jeśli chcesz zapisać plik bazy danych w swoim systemie plików, będziesz musiał sam napisać tę logikę.
— lovasoa

4

Jedną z najbardziej interesujących funkcji w programie HTML5jest możliwość lokalnego przechowywania danych i umożliwienia działania aplikacji w trybie offline. Istnieją trzy różne interfejsy API, które obsługują te funkcje, a wybór jednego zależy od tego, co dokładnie chcesz zrobić z danymi, które planujesz przechowywać lokalnie:

  1. Pamięć internetowa: do podstawowej pamięci lokalnej z parami klucz / wartość
  2. Pamięć w trybie offline: używa manifestu do buforowania całych plików do użytku w trybie offline
  3. Baza danych sieci Web: do przechowywania relacyjnych baz danych

Aby uzyskać więcej informacji, zobacz Wprowadzenie do interfejsów API magazynu HTML5

I jak używać

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


5
hehe, spójrz na drugą wersję swojej odpowiedzi, tam możesz ją przeczytać;)
— Christoph


-2

IMHO, najlepszym sposobem jest wywołanie Pythona za pomocą POST przez AJAX i zrobienie wszystkiego, co musisz zrobić z bazą danych w Pythonie, a następnie zwrócenie wyniku do javascript. Obsługa json i sqlite w Pythonie jest niesamowita i jest w 100% wbudowana nawet w nieco nowszą wersję Pythona, więc nie ma bólu „zainstaluj to, zainstaluj to”. W Pythonie:

import sqlite3
import json

... to wszystko, czego potrzebujesz. Jest częścią każdej dystrybucji Pythona.

@Sedrick Jefferson poprosił o przykłady, więc (nieco spóźniony) napisałem tutaj samodzielne połączenie między Javascriptem a Pythonem.


2
pytanie zawiera „… do którego chciałbym uzyskać dostęp z przeglądarki…” . więc twoja odpowiedź (z python) jest poza obszarem (przynajmniej dzisiaj, kiedy nie jest tak łatwo uruchomić Pythona z przeglądarki)
— maxkoryukov
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.