JavaScript'ten bir SQLite veritabanına erişmek mümkün mü?


97

Tarayıcıdan file: // şemasını kullanarak erişmek istediğim bir dizi HTML dosyam ve bir SQLite veritabanım var. Veritabanına erişmek ve JavaScript kullanarak sorgular (ve tablolar) oluşturmak mümkün müdür?


3
By file:düzeni bilgisayarda demek tarayıcı üzerinde çalışıyor?

3
Evet. Şu anda bir rapor oluşturan bir aracım var (bir sürü resim, html dosyası ve bir sqlite veritabanı). Bu raporu yerel olarak kolayca açabilirim (yani $ google-chrome report_out / index.html). Bunu daha etkileşimli hale getirmek istiyorum, böylece javascript üretilen verileri veritabanından okuyacak ve ondan istatistikler oluşturacak.
Pal Szasz

Bir WebSocket proxy üzerinden bağlantı
kurmanın

Yanıtlar:


41

Aslında cevap evet. Bunu nasıl yapabileceğinize dair bir örnek: http://html5doctor.com/introducing-web-sql-databases/

Kötü olan şey, tarayıcılar tarafından çok sınırlı destek sağlamasıdır.

Daha fazla bilgi burada HTML5 IndexedDB, Web SQL Veritabanı ve tarayıcı savaşları

Not: @Christoph'un dediği gibi, Web SQL artık aktif bakımda değil ve Web Uygulamaları Çalışma Grubu bunu daha fazla sürdürme niyetinde değil, bu yüzden buraya bakın https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

DÜZENLE

@Clentfort'un dediği gibi, SQL.js kullanarak istemci tarafı JavaScript ile SQLite veritabanına erişebilirsiniz .


15
Bilginize websql terk edildi ... Bunun yerine indexedDB'yi tanıtın .
Christoph

2
Ancak zaten var olan veri tabanına bağlanmak mümkün mü? İçinde zaten javascript ile işlemek istediğim bir sürü veri var.
Pal Szasz

Sunucu tarafında bazı şeyler deneyebilir veya bu codeforgeek.com/2014/07/node-sqlite-tutorial
Mrug

40

Sen kullanabilirsiniz SQL.js JavaScript derlenmiş SQLLite lib olan ve HTML5 tanıtılan yerel depolama veritabanını depolar.


9
yerel depolama çok yavaş ve beceriksiz ... bunun yerine indexedDB kullanmalısınız. Yine de bu sanırım çalışan bir çözüm.
Christoph

2
Yerel depolama, indexedDB kadar güzel olmasa da, hemen hemen her yerde desteklenir. SQL.js yerel depolamayı doğrudan kullanmaz (bellekte bulunur), bu nedenle yalnızca başlatma / kapatma sırasında yerel depolamaya okuma / yazma yapmanız gerekir, hatta SQL.js'nin durumunu bir sunucuya kaydedebilirsiniz. Kullanıcının değişiklikleri özel olarak kaydetmesini istiyorsanız iyi, eğer bir kullanıcı kaydetmesine izin vermeden ayrıldığında işleri bozabilirse kötü.
Perkins

20

Güncel cevap

Sql.js çatalım şimdi kriken'in deposunda orijinal sürümle birleştirildi .

İyi dokümantasyon da orijinal repo mevcuttur.

Orijinal cevap (eski)

Sql.js'nin daha yeni sürümünü kullanmalısınız . Bu bir sqlite 3.8 limanıdır, iyi bir dokümantasyona sahiptir ve aktif olarak bakımı yapılmaktadır (benim tarafımdan). Hazırlanmış ifadeleri ve BLOB veri türünü destekler.


Sunucu tarafında bulunan SQLite veritabanına erişmek (insert, update, read) için sql.js kullanabilir miyim?
05'te Abhee

@lovasoa Sql.js kullanırsam, yeni bir bilgisayar sitemi çalıştırabilir ve herhangi bir kurulum yapmadan kendi veritabanına (HTML klasörüyle aynı yolda saklanan db) CRUD yapabilir mi?
Jeaf Gilbert

1
@JeafGilbert No. sql.js yalnızca bellek içinde çalışır, hiçbir şey kalıcı değildir. Veritabanı dosyasını dosya sisteminize yazmak istiyorsanız, bu mantığı kendiniz yazmanız gerekecektir.
lovasoa

4

En ilginç özelliklerden biri HTML5, verileri yerel olarak saklama ve uygulamanın çevrimdışı çalışmasına izin verme yeteneğidir. Bu özelliklerle ilgilenen üç farklı API vardır ve birini seçmek, yerel olarak depolamayı planladığınız verilerle tam olarak ne yapmak istediğinize bağlıdır:

  1. Web depolama: Anahtar / değer çiftleriyle temel yerel depolama için
  2. Çevrimdışı depolama: Çevrimdışı kullanım için tüm dosyaları önbelleğe almak için bir bildirim kullanır
  3. Web veritabanı: İlişkisel veritabanı depolaması için

Daha fazla referans için HTML5 depolama API'lerine giriş bölümüne bakın

Ve nasıl kullanılır

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


5
hehe, cevabınızın ikinci revizyonuna bir bakın, orada okuyabilirsiniz;)
Christoph


-2

IMHO, en iyi yol, AJAX aracılığıyla POST kullanarak Python'u çağırmak ve Python içinde DB ile yapmanız gereken her şeyi yapmak, ardından sonucu javascript'e döndürmektir. Python'da json ve sqlite desteği harika ve Python'un biraz yeni sürümlerinde bile% 100 yerleşiktir, bu nedenle "bunu yükle, onu yükle" acısı yoktur. Python'da:

import sqlite3
import json

... tek ihtiyacınız olan bu. Her Python dağıtımının bir parçasıdır.

@Sedrick Jefferson örnekler istedi, bu yüzden (biraz geç) burada Javascript ve Python arasında tek başına bir ileri geri yazdım .


2
soru "... tarayıcıdan erişmek istediğim ..." içeriyor . yani cevabınız (ile python) alan dışında (en azından bugün, bir tarayıcıdan python çalıştırmak o kadar kolay olmadığında)
maxkoryukov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.