ส่วนขยาย SQLite สำหรับตรวจสอบวัตถุ JSON ด้วย JSON Schema ขึ้นอยู่กับ sqlite-loadable-rs
และ jsonschema
crate
หากบริษัทหรือองค์กรของคุณพบว่าห้องสมุดนี้มีประโยชน์ โปรดพิจารณาสนับสนุนงานของฉัน!
.load . / jsonschema0
select jsonschema_matches( ' {"maxLength": 5} ' , json_quote( ' alex ' ));
ใช้กับข้อจำกัด CHECK
ของ SQLite เพื่อตรวจสอบความถูกต้องของคอลัมน์ JSON ก่อนที่จะแทรกลงในตาราง
create table students (
-- ensure that JSON objects stored in the data column have "firstName" strings,
-- "lastName" strings, and "age" integers that are greater than 0.
data json check (
jsonschema_matches(
json( '
{
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0
}
}
}
' ),
data
)
)
);
insert into students(data)
values ( ' {"firstName": "Alex", "lastName": "Garcia", "age": 100} ' );
-- ✓
insert into students(data)
values ( ' {"firstName": "Alex", "lastName": "Garcia", "age": -1} ' );
-- Runtime error: CHECK constraint failed: jsonschema_matches
ค้นหาค่าทั้งหมดในคอลัมน์ที่ไม่ตรงกับสคีมา JSON
select
rowid,
jsonschema_matches(
' {
"type": "array",
"items": {
"type": "number"
}
} ' ,
foo
) as valid
from bar
where not valid;
ภาษา | ติดตั้ง | |
---|---|---|
หลาม | pip install sqlite-jsonschema | |
ชุดข้อมูล | datasette install datasette-sqlite-jsonschema | |
โหนด js | npm install sqlite-jsonschema | |
เดโน่ | deno.land/x/sqlite_jsonschema | |
ทับทิม | gem install sqlite-jsonschema | |
การเปิดตัว Github | ||
สนิม | cargo add sqlite-jsonschema |
sqlite-jsonschema
เผยแพร่บน pip, npm และ https://deno.land/x สำหรับโปรแกรมเมอร์ Python, Node.js และ Deno นอกจากนี้ยังมีส่วนขยายที่สร้างไว้ล่วงหน้าสำหรับใช้ในสภาพแวดล้อมอื่นๆ
สำหรับนักพัฒนา Python ให้ใช้แพ็คเกจ sqlite-jsonschema
Python:
pip install sqlite-jsonschema
จากนั้นสามารถโหลดส่วนขยาย sqlite-jsonschema
ลงในอ็อบเจ็กต์การเชื่อมต่อ sqlite3
ได้
import sqlite3
import sqlite_jsonschema
db = sqlite3 . connect ( ':memory:' )
sqlite_jsonschema . load ( db )
db . execute ( 'select jsonschema_version(), jsonschema()' ). fetchone ()
ดู การใช้ sqlite-jsonschema
กับ Python เพื่อดูรายละเอียด
สำหรับนักพัฒนา Node.js ให้ใช้แพ็คเกจ sqlite-jsonschema
NPM:
npm install sqlite-jsonschema
จากนั้นสามารถโหลดส่วนขยาย sqlite-jsonschema
ลงในการเชื่อมต่อ better-sqlite3
หรือ node-sqlite3
import Database from "better-sqlite3" ;
import * as sqlite_jsonschema from "sqlite-jsonschema" ;
const db = new Database ( ":memory:" ) ;
db . loadExtension ( sqlite_jsonschema . getLoadablePath ( ) ) ;
const version = db . prepare ( "select jsonschema_version()" ) . pluck ( ) . get ( ) ;
console . log ( version ) ; // "v0.2.0"
ดู การใช้ sqlite-jsonschema
กับ Node.js เพื่อดูรายละเอียด
สำหรับนักพัฒนา Deno ให้ใช้โมดูล x/sqlite_jsonschema Deno กับ x/sqlite3
import { Database } from "https://deno.land/x/[email protected]/mod.ts" ;
import * as sqlite_jsonschema from "https://deno.land/x/sqlite_jsonschema/mod.ts" ;
const db = new Database ( ":memory:" ) ;
db . enableLoadExtension = true ;
db . loadExtension ( sqlite_jsonschema . getLoadablePath ( ) ) ;
const [ version ] = db
. prepare ( "select jsonschema_version()" )
. value < [ string ] > ( ) ! ;
console . log ( version ) ;
ดู การใช้ sqlite-jsonschema
กับ Deno เพื่อดูรายละเอียด
สำหรับ Datasette ให้ใช้ปลั๊กอิน datasette-sqlite-jsonschema
เพื่อรวมฟังก์ชัน sqlite-jsonschema
เข้ากับอินสแตนซ์ Datasette ของคุณ
datasette install datasette-sqlite-jsonschema
โปรดดูรายละเอียด การใช้ sqlite-jsonschema
กับชุดข้อมูล
sqlite3
CLI สำหรับ sqlite3
CLI ให้ดาวน์โหลดส่วนขยายที่คอมไพล์ไว้ล่วงหน้าจากหน้า Releases หรือสร้างเอง จากนั้นใช้คำสั่ง . .load
dot
.load . / jsonschema0
select jsonschema_version();
' v0.2.1 '
หากคุณใช้ sqlite-jsonschema
ในลักษณะที่แตกต่างจากที่ระบุไว้ข้างต้น ให้ดาวน์โหลดส่วนขยายที่คอมไพล์ไว้ล่วงหน้าจากหน้าเผยแพร่และโหลดลงในสภาพแวดล้อมของคุณ ดาวน์โหลดไฟล์ jsonschema0.dylib
(สำหรับ MacOS), jsonschema0.so
(Linux) หรือ jsonschema0.dll
(Windows) จากรีลีสและโหลดลงในสภาพแวดล้อม SQLite ของคุณ
หมายเหตุ: เลข
0
ในชื่อไฟล์ (jsonschema0.dylib
/jsonschema0.so
/jsonschema0.dll
) หมายถึงเวอร์ชันหลักของsqlite-jsonschema
ปัจจุบันsqlite-jsonschema
เป็นเวอร์ชันก่อน v1 ดังนั้นคาดว่าจะมีการเปลี่ยนแปลงในเวอร์ชันต่อๆ ไป
มีโอกาสที่จะมีวิธีบางอย่างที่เรียกว่า "loadExtension" หรือ "load_extension" ในไลบรารีไคลเอนต์ SQLite ที่คุณใช้อยู่ หรือเป็นทางเลือกสุดท้าย ให้ใช้ฟังก์ชัน load_extension()
SQL
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งคอมไพเลอร์ Rust, make และ C แล้ว จากนั้น git clone
ที่เก็บนี้และรัน make loadable-release
git clone https://github.com/asg017/sqlite-jsonschema.git
cd sqlite-jsonschema
make loadable-release
เมื่อเสร็จแล้ว ส่วนขยายที่คอมไพล์แล้วของคุณจะปรากฏใต้ dist/release/
ไม่ว่าจะเป็น jsonschema0.so
, jsonschema0.dylib
หรือ jsonschema0.dll
ขึ้นอยู่กับระบบปฏิบัติการของคุณ
ดูการอ้างอิง API แบบเต็มสำหรับฟังก์ชัน SQL sqlite-jsonschema
ทุกรายการ
ฉัน (อเล็กซ์ ?) ใช้เวลาและพลังงานอย่างมากกับโปรเจ็กต์นี้และโปรเจ็กต์โอเพ่นซอร์สอื่น ๆ อีกมากมาย หากบริษัทหรือองค์กรของคุณใช้ห้องสมุดนี้ (หรือคุณรู้สึกมีน้ำใจ) โปรดพิจารณาสนับสนุนงานของฉันหรือแบ่งปันโครงการนี้กับเพื่อน!
sqlite-xsv
ส่วนขยาย SQLite สำหรับการทำงานกับ CSVsqlite-http
ส่วนขยาย SQLite สำหรับส่งคำขอ HTTPsqlite-loadable-rs
เฟรมเวิร์กสำหรับการเขียนส่วนขยาย SQLite ใน Rust